宿主机与docker容器之间免密码ssh链接,容器与容器之间ssh免密码连接
转:https://segmentfault.com/a/1190000012484646若要实现免密登陆,意味着无论是宿主机,还是容器都要彼此交互公钥:容器A发送自身公钥给中心机器,统一由中心机器,回发全部需要ssh到容器A的公钥信息,任何一个新加入的容器,发送信息给中心机器,则中心机器通知全部的容器更新附加对应的公钥信息,如此实现中心机器到全部容器,容器之间的彼此免ssh登陆一、S...
转:https://segmentfault.com/a/1190000012484646
若要实现免密登陆,意味着无论是宿主机,还是容器都要彼此交互公钥:
容器A发送自身公钥给中心机器,统一由中心机器,回发全部需要ssh到容器A的公钥信息,任何一个新加入的容器,发送信息给中心机器,则中心机器通知全部的容器更新附加对应的公钥信息,如此实现中心机器到全部容器,容器之间的彼此免ssh登陆
一、SSH简介
SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA、DSA等。
- RSA:非对称加密算法,其安全性基于极其困难的大整数的分解(两个素数的乘积);
- DSA:也是非对称加密算法,其安全性基于整数有限域离散对数难题;
二、SSH免密登陆原理
三、SSH免密登陆
服务器环境:
机器 | 用户名 | 密码 |
---|---|---|
master | hadoop | hadoop |
slave1 | hadoop | hadoop |
slave2 | hadoop | hadoop |
1、生成密钥
分别在master、slave1、slave2机器的用户家目录(/home/hadoop/)下,执行下列命令,通过RSA算法进行加密,提示输入的话可直接回车不输入任何内容:
ssh-keygen -t rsa
将会在家目录下的隐藏目录/.ssh
下生成文件:
id_rsa.pub //公钥
id_rsa //密钥
2、追加公钥
在master机器上,将id_rsa.pub
的内容写入authorized_keys
文件中
cat id_rsa.pub >> authorized_keys
3、发送其他服务器公钥
在slave1机器上,将id_rsa.pub
复制到master机器的/.ssh
目录下,并重新命名位id_rsa.pub.slave1
:
scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.slave1
在slave2机器上,将id_rsa.pub
复制到master机器的/.ssh
目录下,并重新命名位id_rsa.pub.slave2
:
scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pub.slave2
4、追加其他服务器公钥
在master机器上,在/.ssh
目录下将看到从slave1、slave2发送过来的文件:
id_rsa.pub.slave1
id_rsa.pub.slave2
将这两个公钥内容追加写入到master机器/.ssh
目录下的authorized_keys
中:
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys
5、确认公钥内容
在master机器上,查看authorized_keys
文件内容,确认包含slave1、slave2机器的两个公钥内容:
cat authorized_keys
6、发送authorized_keys
在master机器上,将authorized_keys
发送到slave1、slave2机器的/.ssh
目录下:
scp authorized_keys hadoop@slave1:/home/hadoop/.ssh/
scp authorized_keys hadoop@slave2:/home/hadoop/.ssh/
7、修改authorized_keys文件权限
分别在master、slave1、slave2机器上执行,对auhorized_keys
进行权限修改,否则将无法实现免密码登录:
chmod 600 authorized_keys
8、SSH登陆测试
在master机器上,从master机器通过ssh登录到slave1,第一次需要密码,退出后以后登录就不需要密码了,其他机器类似操作:
//登陆slave1
ssh slave1
//登陆后退出
exit
//重新登陆
ssh slave1
更多推荐
所有评论(0)