Linux学习笔记-Ubuntu系统下配置ssh免密访问

Ubuntu系统下配置ssh免密访问

  • 一、基本信息
  • 二、ssh安装
    • 2.1 查看是否已经安装ssh
    • 2.2 安装ssh
    • 2.3 查看ssh安装状态
  • 三、启动、停止,及开机自启动
    • 3.1 启动ssh
    • 3.2 关闭ssh
    • 3.3 使用systemctl设置ssh服务自启动
    • 3.4 使用systemctl关闭ssh开机启动
  • 四、配置通过密钥进行免密访问
    • 4.1 生成密钥
    • 4.2 通过ssh-agent管理私钥
    • 4.3 管理公钥
    • 4.4 通过scp将公钥拷贝到服务器
    • 4.5 将公钥添加到公钥管理文件中
    • 4.6 享受ssh免密链接服务器

一、基本信息

Ubuntu是linux系统,虽然他是支持界面化操作的,一般用来做服务器用,所以配置ssh可以比较安全的进行访问,也方便在其他地方访问服务器,轻松省事。
Ubuntu系统版本:
使用uname -a指令获取系统版本信息

zero@ubuntu:~$ uname -a
Linux ubuntu 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

具体信息如下:

  • 系统类型: Linux
  • 主机名:ubuntu
  • 内核版本:5.15.0-79-generic
  • 编译时间:#86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023
  • 硬件架构:x86_64 x86_64 x86_64(处理器架构,操作系统类型,软件环境)
  • 操作系统名称:GNU/Linux

二、ssh安装

2.1 查看是否已经安装ssh

直接输入ssh查看

zero@ubuntu:~$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface][-b bind_address] [-c cipher_spec] [-D [bind_address:]port][-E log_file] [-e escape_char] [-F configfile] [-I pkcs11][-i identity_file] [-J [user@]host[:port]] [-L address][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port][-Q query_option] [-R address] [-S ctl_path] [-W host:port][-w local_tun[:remote_tun]] destination [command [argument ...]]

有具体的信息就是已经安装了。

2.2 安装ssh

可以使用如下指令安装ssh

sudo apt-get install openssh-server

一般服务器是被访问的,所以只要安装openssh-server即可,如果要安装客户端,将安装的内容改成openssh-client即可。

2.3 查看ssh安装状态

安装完成后重新查看ssh安装状态
使用netstat查看状态

zero@ubuntu:~$ sudo netstat -tlnp | grep sshd
[sudo] password for zero:
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2714/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      2714/sshd: /usr/sbi

使用systemctl查看状态

zero@ubuntu:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell serverLoaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)Active: active (running) since Sat 2023-08-26 15:01:13 UTC; 13min agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 2714 (sshd)Tasks: 1 (limit: 4514)Memory: 4.0MCPU: 33msCGroup: /system.slice/ssh.service└─2714 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"Aug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)

三、启动、停止,及开机自启动

3.1 启动ssh

zero@ubuntu:~$ sudo systemctl start ssh		#启动ssh服务
zero@ubuntu:~$ sudo systemctl status sshd	#查询状态
Unit sshd.service could not be found.
zero@ubuntu:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell serverLoaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)Active: active (running) since Sat 2023-08-26 15:01:13 UTC; 27min agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 2714 (sshd)Tasks: 1 (limit: 4514)Memory: 4.0MCPU: 33msCGroup: /system.slice/ssh.service└─2714 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"Aug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)
zero@ubuntu:~$ sudo netstat -tlnp | grep sshd	#查询状态
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2714/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      2714/sshd: /usr/sbi

3.2 关闭ssh

zero@ubuntu:~$ sudo systemctl stop ssh				#关闭ssh服务
zero@ubuntu:~$ sudo netstat -tlnp | grep sshd		#关闭后查询不到网络状态
zero@ubuntu:~$ sudo systemctl status ssh			#ssh状态已关闭
○ ssh.service - OpenBSD Secure Shell serverLoaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)Active: inactive (dead) since Sat 2023-08-26 15:34:05 UTC; 11s agoDocs: man:sshd(8)man:sshd_config(5)Process: 2714 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=0/SUCCESS)Main PID: 2714 (code=exited, status=0/SUCCESS)CPU: 35msAug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)
Aug 26 15:34:05 ubuntu systemd[1]: Stopping OpenBSD Secure Shell server...
Aug 26 15:34:05 ubuntu systemd[1]: ssh.service: Deactivated successfully.
Aug 26 15:34:05 ubuntu systemd[1]: Stopped OpenBSD Secure Shell server.

3.3 使用systemctl设置ssh服务自启动

zero@ubuntu:~$ sudo systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh

在这里插入图片描述

设置完成之后重启即可

3.4 使用systemctl关闭ssh开机启动

zero@ubuntu:~$ sudo systemctl disable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ssh
Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
Removed /etc/systemd/system/sshd.service.

在这里插入图片描述

四、配置通过密钥进行免密访问

部分操作说明可参考Windows下配置SSH实现免密访问和远程端口转发,本文直接进行操作。

4.1 生成密钥

zero@ubuntu:~$ sudo ssh-keygen			#此处直接使用默认设置生成rsa的密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):	//不修改路径
Enter passphrase (empty for no passphrase):			#不设置密码,实际使用根据自己需要设置密码会比较安全
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:elLfv9r5e4RLOSKnee6oJPBGmS6YGm3WcAuvXVAxBtg root@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|   o..+          |
|  . E. o         |
|      .          |
|     . o         |
|  o + + S      o |
| . O B o ...o = .|
|. * = O o .=.o + |
| = o + =  o..o...|
|. . .   ...++.=++|
+----[SHA256]-----+

注: 若要配置git访问服务器,此处密钥对可使用rsa格式的,git for windows默认识别rsa密钥。

4.2 通过ssh-agent管理私钥

zero@ubuntu:~$ ssh-agent			#启动服务
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXjkoDta/agent.3455; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3456; export SSH_AGENT_PID;
echo Agent pid 3456;zero@ubuntu:~$ ssh-add /root/.ssh/id_rsa	# 没有使用agent启动bash直接调用ssh-add添加私钥会报错
Could not open a connection to your authentication agent.	zero@ubuntu:~$ sudo ssh-agent bash --login -i		# 使用ssh-agent启动bash,注意需要添加sudo,添加root的密钥需要使用root权限。root@ubuntu:/home/zero# ssh-add /root/.ssh/id_rsa		#将密钥添加到agent中
Identity added: /root/.ssh/id_rsa (root@ubuntu)
root@ubuntu:/home/zero# exit		# 退出当前bash
logout
zero@ubuntu:~$

4.3 管理公钥

服务器管理公钥,可以直接添加公钥文件中

zero@ubuntu:~$ cat /root/.ssh/id_ras.pub >> authorized_keys			# 直接拷贝汇报错,当我们要操作的公钥在root文件夹下时就需要root权限
cat: /root/.ssh/id_ras.pub: Permission deniedzero@ubuntu:~$ sudo cat /root/.ssh/id_rsa.pub >> authorized_keys			# 添加sudo使用root权限操作
zero@ubuntu:~$			# 操作成功没有错误提示

4.4 通过scp将公钥拷贝到服务器

需要将公钥拷贝到要访问的服务器中。

PS C:\WINDOWS\system32> scp C:\Users\LJM\.ssh\id_rsa.pub zero@192.168.159.129:.ssh/id_rsa_git.pub
zero@192.168.159.129's password:
id_rsa.pub                                                                            100%  567   558.8KB/s   00:00
PS C:\WINDOWS\system32>

在这里插入图片描述

4.5 将公钥添加到公钥管理文件中

切换到.ssh文件夹中,然后将公钥添加到公钥管理文件中。

zero@ubuntu:~/.ssh$ ll
total 24
drwx------ 2 zero zero 4096 Aug 26 17:25 ./
drwxr-x--- 4 zero zero 4096 Aug 26 16:13 ../
-rw------- 1 zero zero  567 Aug 26 17:28 authorized_keys
-rw-rw-r-- 1 zero zero 2602 Aug 26 16:57 id_rsa_git
-rw-rw-r-- 1 zero zero  567 Aug 26 17:25 id_rsa_git.pub
-rw-r--r-- 1 root root  565 Aug 26 16:43 id_rsa.pub
zero@ubuntu:~/.ssh$ cat id_rsa_git.pub >> authorized_keys

4.6 享受ssh免密链接服务器

公钥和私钥添加管理后,对应的文件即可删除了。然后客户端就可以通过ssh免密访问服务器。

通常一般要访问的客户端保存私钥,服务端保存公钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/107409.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

香港服务器是什么?

香港服务器是指位于香港地区的云服务器或物理服务器。香港作为一个重要的国际金融和商业中心,具有良好的地理位置和先进的网络基础设施。香港服务器提供稳定的网络连接和高性能,可用于托管网站、应用程序和数据存储等各种互联网服务。 香港服务器具有以…

研磨设计模式day10中介者模式

目录 场景 思考 解决思路 模式讲解 调用示意图 中介者模式的优缺点 中介者模式的本质 何时选用 场景 如果没有主板,电脑各个配件怎么交互呢? 有些配件接口不同,必须把数据接口进行转换才能匹配上,无敌复杂。 有了主板之后就是下面这…

【leetcode 力扣刷题】链表基础知识 基础操作

链表基础知识 基础操作 链表基础操作链表基础知识插入节点删除节点查找节点 707. 设计链表实现:单向链表:实现:双向链表 链表基础操作 链表基础知识 在数据结构的学习过程中,我们知道线性表【一种数据组织、在内存中存储的形式】…

java八股文面试[多线程]——合适的线程数是多少

知识来源: 【并发与线程】 合适的线程数量是多少?CPU 核心数和线程数的关系?_哔哩哔哩_bilibili

03.sqlite3学习——数据类型

目录 sqlite3学习——数据类型 SQL语句的功能 SQL语法 SQL命令 SQL数据类型 数字类型 整型 浮点型 定点型decimal 浮点型 VS decimal 日期类型 字符串类型 CHAR和VARCHAR BLOB和TEXT SQLite 数据类型 SQLite 存储类 SQLite 亲和类型(Affinity)及类型名称 Boo…

如何使用PHP实现多语言网站功能

如何使用PHP实现多语言网站功能 在全球化的今天,开发多语言网站成为了一个必要的需求。PHP作为一种常用的编程语言,可以很方便地实现多语言网站功能。本文将介绍如何使用PHP实现多语言网站功能,并提供相应的代码示例。 一、创建语言文件 首先…

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS 上一篇文章中,我们使用Nignx的反向代理和端口转发实现域名访问家里主机上的web了。 由于家庭宽带基本都是动态IP,每当你重启一次光猫,IP地址就会变化一次。当光猫因为…

ubuntu修改默认文件权限umask

最近在使用ubuntu的过程中发现一个问题: 环境是AWS EC2,登录用户ubuntu,系统默认的umask是027,修改/etc/profile文件中umask 027为022后,发现从ubuntu用户sudo su过去root用户登录查询到的umask还是027,而…

C++动态库编程 | C++名称改编、标准C接口、extern “C”、函数调用约定以及def文件详解

目录 1、导入导出声明 2、C函数名称改编与extern "C" 3、函数调用约定与跨语言调用 3.1、函数调用约定 3.2、跨语言调用dll库接口 3.3、函数调用约定以哪个为准 4、def文件的使用 5、在C程序中引用ffmpeg库中的头文件链接报错问题 6、最后 VC常用功能开发汇…

基于RUM高效治理网站用户体验入门-价值篇

用户体验 用户体验基本包含访问网站的性能、可用性和正确性。通俗的讲,就是一把通过用户访问测量【设计者】意图的尺子。 本文目的 网站如何传递出设计者的意图,可能收页面加载时间太长、或者页面在用户的浏览器中渲染时间太慢,或者第三方设…

使用Maven父工程构建spring boot子工程

1.父工程删除src目录,pom文件配置parent为spring-boot-starter-parent 2.创建子工程,子工程引入一个springboot相关依赖 注意:子工程引入springboot相关依赖之后子工程才能被解析为springboot模块

单片机学习-蜂鸣器如何发出声音

硬件电路 软件编写 ①发出声音 #include "reg52.h" typedef unsigned int u16; // 重新定义 类型 typedef unsigned char u8; // 重新定义 类型sbit BEEP P2^5; //定义 P2第五个管教 为BEEP // 延时函数 void delay_time(u16 times) {while(times--); } vo…

qt tableview setEditTriggers解析

EditTrigger EditTrigger是QAbstractItemView Class的Public Function This property holds which actions will initiate item editing 此属性保存哪些操作将启动项编辑 This property is a selection of flags defined by EditTrigger, combined using the OR operator. T…

python编程环境使用技巧2-python环境迁移

Python环境迁移步骤 将Python环境从一个计算机迁移到另一个计算机可以按照以下步骤进行: 1-备份环境: 在源计算机上,使用pip工具备份当前Python环境的包列表到一个文本文件。在命令行终端中执行以下命令: pip freeze > requi…

layUI 中 穿梭框无法获取值的细节问题

初始化的时候一定要指定id,不然就会出现无法调用 获得右侧数据和实例重载的方法

C++ Primer 第2章 变量和基本类型

C Primer 第2章 变量和基本类型 2.1 基本内置类型2.1.1 算术类型一、带符号类型和无符号类型练习 2.1.2 类型转换一、含有无符号类型的表达式 2.1.3 字面值常量一、整型和浮点型字面值二、字符和字符串字面值三、转义序列四、指定字面值的类型五、布尔字面值和指针字面值 2.2 变…

网络字节序——TCP接口及其实现简单TCP服务器

网络字节序——TCP接口及其实现简单TCP服务器 文章目录 网络字节序——TCP接口及其实现简单TCP服务器简单TCP服务器的实现1. 单进程版:客户端串行版2. 多进程版:客户端并行版netstat查看网络信息3.多线程版:并行执行log.hpp 守护进程fg、bg s…

Vue的使用

Vue的使用 Vue到底是啥?Vue中包含了两部分虚拟DOM 模块化编程虚拟DOM,在我们重用模板的时候,在Vue中存在虚拟DOM 虚拟DOM是为了更好的去重用我们的DOM (增加元素的时候,先去虚拟DOM找是否存在,如果有那么不用生成&am…

android系统启动流程之init启动分析

先根据上图来描述下安卓整个系统的启动流程: 当上电时,系统先执行BootRom, 加载引导程序执行。 然后进入bootloader,在安卓系统中基本上这个bootloader是uboot, 通过uboot引导启动内核,此时运行在kernel空间,这时的i…

【Go 基础篇】Go语言中的自定义错误处理

错误是程序开发过程中不可避免的一部分,而Go语言以其简洁和高效的特性闻名。在Go中,自定义错误(Custom Errors)是一种强大的方式,可以为特定应用场景创建清晰的错误类型,以便更好地处理和调试问题。本文将详…