linxu免密登录的配置:详细原理版

本文详细介绍了SSH协议在加密远程管理服务器中的应用,包括基于口令和密钥的安全验证方法,以及通过SSH协议进行数据传输(如scp、sftp)。还展示了如何配置SSH密钥对实现免密登录,以及在集群环境中的应用。
摘要由CSDN通过智能技术生成

一、ssh(secure shell) --加密远程登录管理服务器,加密的数据传输
SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。
telnet --通过字符界面远程管理服务器(明文)
ssh/openssh --加密的远程管理,加密的数据传输(scp/winscp/sftp)

​ 1、可以使用ssh协议远程加密管理服务器
​ 2、使用SSH协议进行数据传输(scp、sftp)

二、 从客户端来看,SSH提供两种级别的安全验证
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)
需要依靠 密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用自己的私密匙解密再把它发送给服务器,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)

三、ssh远程登录的过程

1.基于账号/密码的验证
服务端:私钥
客服端:公钥
a.sshd启动的时候会产生一个秘钥对,每个小时更新一次秘钥
c.客户端请求连接,建立连接,协商加密算法和协议版本(sshv1 sshv2)
d.服务端发送自己的公钥给客户端
e.客户使用公钥将用户名和密码加密发送给服务端
f.服务端使用使用进行解密出用户和密码并进行验证,如果验证通过则允许 客户端登陆

2.基于密钥对的验证流程原理
服务端:公钥
客服端:私钥
a.客户端生成秘钥对,自己持有私钥,服务端持有公钥
b.客户端发起连接请求,服务端收到请求后建立连接,然后服务端随机生成一个字符串用公钥加密后传给客户端
c.客户收到加密后的随机字符串,使用自己的私钥解密后,再使用自己的私钥加密再次发送给服务端
d.服务端收到加密随机字符串后使用自己的公钥解密,如果得到原来的随机字符串说明秘钥匹配正确,则允许客户端登陆

下面开始免密登录的操作

首先我们查看root家目录下的.ssh目录,会发现什么都没有

[root@ly001 ~]# ls .ssh/
[root@ly001 ~]# 

当第一次尝试连接134主机时,它会请求指纹验证,yes以后会要求我们输入密码

[root@ly001 ~]# ssh 192.168.121.134
The authenticity of host '192.168.121.134 (192.168.121.134)' can't be established.
ECDSA key fingerprint is SHA256:GiWtcvXYqpXOB3Iom1Az4qHrOkOh8EbQxc/fKd0DxB8.
ECDSA key fingerprint is MD5:91:94:18:ed:61:af:4e:42:55:11:5b:53:97:a2:f5:8a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.121.134' (ECDSA) to the list of known hosts.
root@192.168.121.134's password: 

然后我们再看.ssh目录下的文件,多了一个known_hosts,这个是指纹认证文件,在第一次连接的时候需要验证,选择yes以后就会自动将指纹信息记录到这个文件里,下次连接就不需要认证了。

[root@ly001 ~]# ls .ssh/
known_hosts

现在连接是需要密码的,所以我们开始配置密钥对,通过密钥对来连接就不需要密码了

我们用ssh-keygen -t rsa来生成密钥对,执行以后一直按回车就行了,看到后面那个框里不懂得乱码就行了,然后再看.ssh目录下的文件,会发现多了两个文件,id_rsa是私钥,id_rsa.pub是公钥,这就是一组密钥对。

[root@ly001 ~]# ssh-keygen -t 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:n1wOwKaqLF4K4EDYm4owULV89y2rTRRHZrry9X/mZaI root@ly001
The key's randomart image is:
+---[RSA 3072]----+
|  ...       +    |
|.o . . .   =     |
|o.. o . = o .    |
|o  o . + o =     |
|= o   . S * +    |
|*o   .   * O .   |
|+. ..     B . o o|
|o.o.     +   . ++|
|.+o     . . E  o+|
+----[SHA256]-----+
[root@ly001 ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts
[root@ly001 ~]# 

然后我们就将公钥传给我们要免密登录(也就是通过密钥对登录)的主机

通过命令ssh-copy-id 192.168.121.134 将公钥传给其它主机,默认是传到root家目录下的隐藏文件.ssh目录下的。当然传公钥是要输入对方的密码的,只是为了以后连接方便,第一次肯定不能少了密码的。

[root@ly001 ~]# ssh-copy-id 192.168.121.134
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.121.134 (192.168.121.134)' can't be established.
ECDSA key fingerprint is SHA256:GiWtcvXYqpXOB3Iom1Az4qHrOkOh8EbQxc/fKd0DxB8.
ECDSA key fingerprint is MD5:91:94:18:ed:61:af:4e:42:55:11:5b:53:97:a2:f5:8a.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.121.134's password: 
SIOCADDRT: File exists

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.121.134'"
and check to make sure that only the key(s) you wanted were added.

[root@ly001 ~]# 

这时候查看134主机的.ssh目录下的文件和文件里的内容。

发现有一个authorized_keys文件,里面放的是133的公钥

[root@ly001 ~]# ls .ssh/
authorized_keys
[root@ly001 ~]# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVPAecY3tsl/az80TCFMeYD6TXhkR8K4y1LQY1+sWcnf/6d+gTLK+sDzw6Hv+b4dJ2zzVMgesi8EZ8PzzrcNEH03WkEUNE9/sg0sg544I4JOMi1j4SxCVM9jOk6kzUAg2gYmvbwIkiHR/Abl3ZUcdjFXRaWQcaaw7T7MN8Ze2mSGXWVxAV60h1ynSmUiWKz5K4xSPLXGRATs0Le2ra0R98FdjsfFTopIVUTuMlWanu0vzSfxCEM3+eDhIv1vKiwMBfEhg7rApiYau9X3qZiTldPZ9xU1VRMqAJQXV56lwy7TafjRKReRadjYnkXtIm82msFRULb4SweB4uKo8u+S5J root@ly001
[root@ly001 ~]# 

查看133主句的公钥,和134收到的一样。并且在133主机用ssh 192.168.121.134登录上去,也不需要密码了,看到和134显示的一样,当然了都登录到134了。exit就可以退出了。

[root@ly001 ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts
[root@ly001 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVPAecY3tsl/az80TCFMeYD6TXhkR8K4y1LQY1+sWcnf/6d+gTLK+sDzw6Hv+b4dJ2zzVMgesi8EZ8PzzrcNEH03WkEUNE9/sg0sg544I4JOMi1j4SxCVM9jOk6kzUAg2gYmvbwIkiHR/Abl3ZUcdjFXRaWQcaaw7T7MN8Ze2mSGXWVxAV60h1ynSmUiWKz5K4xSPLXGRATs0Le2ra0R98FdjsfFTopIVUTuMlWanu0vzSfxCEM3+eDhIv1vKiwMBfEhg7rApiYau9X3qZiTldPZ9xU1VRMqAJQXV56lwy7TafjRKReRadjYnkXtIm82msFRULb4SweB4uKo8u+S5J root@ly001
[root@ly001 ~]# ssh 192.168.121.134
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Fri Sep 15 06:08:24 2023 from 192.168.121.134
SIOCADDRT: File exists
[root@ly001 ~]# ls .ssh/
authorized_keys
[root@ly001 ~]# 

到这里免密登录就配置完成。

如果要集群相互免密登录的话,就每台主机都生成密钥对再传给其它主机就可以了。相互传就可以相互免密登录了,一样的操作。

在写文章的时候也有参考别人的文档,如有侵权请告知删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值