SSH免密登陆详解

为了更好的理解SSH免密码登录原理,我们先来说说SSH的安全验证,SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。

  1. 基于口令的安全验证

这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式。整个过程大致如下:

(1)客户端发起连接请求。

(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。

(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。

(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,到此为止双方彼此拥有了对方的公钥,开始双向加密解密。

PS:当网络中有另一台冒牌服务器冒充远程主机时,客户端的连接请求被服务器B拦截,服务器B将自己的公钥发送给客户端,客户端就会将密码加密后发送给冒牌服务器,冒牌服务器就可以拿自己的私钥获取到密码,然后为所欲为。因此当第一次链接远程主机时,在上述步骤的第(3)步中,会提示您当前远程主机的”公钥指纹”,以确认远程主机是否是正版的远程主机,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到 ~/.ssh/known_hosts文件中。

  1. 基于密匙的安全验证

这种方式你需要在当前用户家目录下为自己创建一对密匙,并把公匙放在需要登录的服务器上。当你要连接到服务器上时,客户端就会向服务器请求使用密匙进行安全验证。服务器收到请求之后,会在该服务器上你所请求登录的用户的家目录下寻找你的公匙,然后与你发送过来的公匙进行比较。如果两个密匙一致,服务器就用该公匙加密“质询”并把它发送给客户端。客户端收到“质询”之后用自己的私匙解密再把它发送给服务器。与第一种级别相比,第二种级别不需要在网络上传送口令。

PS:简单来说,就是将客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,那么客户端的公钥应该放到服务器上哪个地方呢?默认为你要登录的用户的家目录下的 .ssh 目录下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)。

集群软硬件环境

1.服务器组成

1).3台服务器系统硬件配置如下:

cpu:2*Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz

硬盘:600GB

内存:32GB

2).操作系统为CentOS7.4,由于是实验环境,也就不需要配置防火墙规则了,直接关闭防火墙 systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

3).主机名和ip配置如下(/etc/hosts):

172.16.1.240 v1

172.16.1.241 v2

172.16.1.242 v3

配置SSH免密登录

1.v1免密登录任意服务器

1)配置v1服务器本身公钥和免密

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2).实现免密登录(复制锁) ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。下面将v1的公钥注册到v2和v3,在v1上执行下面的命令:

ssh-copy-id -i ~/.ssh/id_dsa.pub v2
输入v2密码

同样注入v1的密钥到v3

2.集群所有节点互相免密

1).在v2和v3上生成各自的公钥及自身免密

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2).将除v1之外所有节点的公钥复制到v1上,这里是将v2,v3的公钥拷贝到v1的authorized_keys,目的是实现v2,v3登录v1实现免密,而反过来不行

ssh-copy-id -i ~/.ssh/id_dsa.pub v1 # 在v2上执行

ssh-copy-id -i ~/.ssh/id_dsa.pub v1 # 在v3上执行

3).实现最终集群所有节点互相免密

现在v1保存了所有节点的公钥,那么发送v1上的authorized_keys到其他节点即可实现所有节点互相免密

scp ~/.ssh/authorized_keys v2:~/.ssh/

scp ~/.ssh/authorized_keys v3:~/.ssh/

版权声明:本文为博主原创文章,转载请注明出处。 旭日酒馆