公钥认证的基本思想:安全
对信息的加密和解密采用不一样的key,这对key分别称做private key和public key,其中,public key存放在欲登陆的服务器上,而private key为特定的客户机所持有。当客户机向服务器发出创建安全链接的请求时,首先发送本身的public key,若是这个public key是被服务器所容许的,服务器就发送一个通过public key加密的随机数据给客户机,这个数据只能经过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而创建起一条安全的信息通道。经过这种方式,客户机不须要向外发送本身的身份标志“private key”便可达到校验的目的,而且private key是不能经过public key反向推断出来的。这避免了网络窃听可能形成的密码泄露。客户机须要当心的保存本身的private key,以避免被其余人窃取,一旦这样的事情发生,就须要各服务器更换受信的public key列表。服务器
配置ssh互信的步骤以下:网络
1. 首先,在要配置互信的机器上,生成各自的通过认证的key文件;ssh
2. 其次,将全部的key文件汇总到一个总的认证文件中;加密
3. 将这个包含了全部互信机器认证key的认证文件,分发到各个机器中去;spa
4. 验证互信。rest
在主机名为dscn1,dscn2,dscn3上以相同的用户hadmin建立ssh互信。it
1) 生成公钥集群
$> ssh-keygen –t rsa登录
遇到提示均回车肯定
出现相似该图的输出时,公钥生成成功
$> ssh dscn2
以主机名dscn2为例,远程登录至集群中另外一节点,重复上述步骤生成公钥
$> exit 退出远程登录
重复执行至全部节点成功生成公钥
2) 生成私钥
如下操做都在同一节点中执行(以dscn1为例)
$> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 将dscn2的公钥放入dscn1的私钥中
$> chmod 600 ~/.ssh/authorized_keys 改变其权限
$> ssh dscn2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
以主机名dscn2为例,将dscn2的公钥放入dscn1的私钥中
重复执行,将全部节点的公钥都添加至dscn1的私钥中
3) 复制私钥及known_hosts文件
如下操做都在同一节点中执行(以dscn1为例)
$>ssh dscn1
将本机也加入到known_hosts文件中
$> scp ~/.ssh/authorized_keys dscn2:~/.ssh/authorized_keys
$> scp ~/.ssh/known_hosts dscn2:~/.ssh/known_hosts
将dscn1的私钥及known_hosts文件拷贝至节点dscn2
重复执行,将dscn2的私钥及known_hosts文件拷贝至其余全部节点
4) 重启服务并验证
前面三个步骤在root和hadmin都执行过一次以后,此步骤只须要在root用户下执行一次
$> systemctl restart sshd.service
$> ssh dscn2 service sshd restart
全部节点的sshd均须要重启
尝试:
$> ssh dscn2
无密码便可直接登陆,则配置成功