SSH,全写为Secure Shell,是开源的,是专为远程登录会话和其他网络服务提供安全性的协议。系统管理员可用它来执行命令,以及通过 SCP 协议在网络上向另一台电脑传输文件。
为什么服务器之间会需要免密码登陆呢?
平时我们用SSH连接登录服务器,总是要输入用户名和密码。而比如在Hadoop集群中,Namenode通过连接来启动和停止各个节点上的守护进程,如果需要频繁操作输入用户名和密码就是麻烦事。
这个时候就要SSH免密码登录了。
下面给大家介绍云服务器间如何实现免密码登录。
01 SSH免密码登录原理
说到SSH免密码登录,就要说到RSA算法。
RSA算法是常用的非对称加密算法,既能用于加密,也能用于数字签名。
SSH免密码登录用的是RSA算法。
SSH免密码登录原理如下图所示。
1、首先服务器1生成密钥对(公钥、私钥)。
2、服务器1把自己的公钥给服务器2。
3、服务器2收到服务器1发来的公钥,保存到.ssh/authorized_keys文件里。
4、服务器2随机产生一个字符串。
5、服务器2使用服务器1公钥进行加密,并且发回给服务器1。
6、服务器1收到服务器2的,使用自己私钥进行解密。
7、服务器1解密后字符串发给服务器2。
8、服务器2收到服务器1解密的字符串。
9、服务器2对比产生的字符串,一样允许登录,不一样不允许登录。
02 SSH免密码登录操作
假设我这边有三台云服务器,系统为Centos7,具体如下:(IP是乱编的)
服务 | 公有IP | 私有IP |
---|---|---|
bigdata111 | 139.19.149.111 | 192.168.0.111 |
bigdata112 | 139.19.149.112 | 192.168.0.112 |
bigdata113 | 139.19.149.113 | 192.168.0.113 |
1)首先将云服务器主机改名字。
hostnamectl set-hostnamebigdata111
hostnamectl set-hostnamebigdata112
hostnamectl set-hostnamebigdata113
2)设置主机名和IP对应,首先是bigdata111这台.。
[root@bigdata111 ~]# vim /etc/hosts
192.168.0.111 bigdata111
139.19.149.112 bigdata112
139.19.149.113 bigdata113
bigdata112、bigdata113设置也一样,如下所示:
[root@bigdata112 ~]# vim /etc/hosts
139.19.149.111 bigdata111
192.168.0.112 bigdata112
139.19.149.113 bigdata113
[root@bigdata113 ~]# vim /etc/hosts
139.19.149.111 bigdata111
139.19.149.112 bigdata112
192.168.0.113 bigdata113
3)生成秘钥对。
ssh-keygen -t rsa
4)上传配置公钥。
ssh-copy-id -i .ssh/id_rsa.pubbigdata111
ssh-copy-id -i .ssh/id_rsa.pubbigdata112
ssh-copy-id -i .ssh/id_rsa.pubbigdata113
输入完成之后需要输入服务器密码。即可设置完成SSH免密码登录了。
之后这三台云服务器之间用SSH连接就直接为免密码登录了。