3台服务器,均为Centos系统。
首先要清楚免密登录实现的原理。所谓免密登录,是在客户端生成公钥和私钥,把公钥放在服务器上,其实是把公钥的内容写入到服务器的 .ssh/authorized_keys 文件里。 然后客户端请求登录服务器时,服务器会把一个字符串用这个客户端的公钥进行加密,传回给客户端,如果这个客户端的私钥能够解密这个字符串,则表示这个客户端能够登录上这个服务器。
下面就开始免密登录的操作。 要做三个前期工作。1. 生成免密登录的账号。避免使用root账号。2. 生成公钥和私钥,以及 authorized_keys 文件,并改权限为600。3. 将每台服务器的别名和IP写入到hosts文件。这步是方便以后的操作。非必须。
以我的为例,我的是5台机互相免密登录。登录账号是hadoop 新建hadoop账号,输入命令 useradd -r hadoop hadoop
切换到hadoop账号,生成公钥和私钥。 输入命令: su – hadoop ssh-keygen -t rsa 一直回车,可以看到已经生成 .ssh/ 文件夹,里面有两个文件,分别就是公钥文件和私钥文件。
生成 authorized_keys 文件。 在 .ssh/ 文件夹建立 authorized_keys 文件,并改权限为600。 输入命令 touch .ssh/ authorized_keyschmod 600 .ssh/ authorized_keys
将每台服务器的别名和IP写入到hosts文件,这一步非必须,只是方便以后的操作。以我的为例,我的每台服务器的hosts文件如下。
到这里,前期工作全部完成。接下来就是免密登录操作的核心,把公钥的内容写入到 authorized_keys 。也就是说,每台服务器的 authorized_keys文件里的内容应该是 其他几台服务器的公钥,即id_rsa.pub这个文件的内容。
以其中一台服务器为例,我称它别名为centos1,它 authorized_keys 文件的内容如下截图。可以看到就是把其他机器的公钥内容都写到里面。至于如何复制公钥的内容到 authorized_keys 文件了,这里就不详说了,最简单的就是通过复制粘贴。
OK,到此,免密登录就完成了。验证一下,例如,1机登录3机,在1机输入命令ssh hadoop@centos3又例如,3机登录2机,在3机输入命令ssh hadoop@centos2可以看到登录都是成功的。