测试环境:redhat6.5和centos7.6
主机IP: public@192.168.55.66(hostname:master)
从机1IP: public@192.168.55.67(hostname:slave1)
从机2IP: public@192.168.55.68(hostname:slave2)
注:需要与哪一个用户互信,就用哪个用户创建免密
一、准备工作
1. 打开本机的ssh的配置文件,每台机器都需要改
如果没有sudo的权限,需要用root用户操作
sudo vi /etc/ssh/sshd_config
把以下内容的行注释符号“#”删除
开放允许密钥认证
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
- 然后重新启动sshd的服务,需要用root用户操作
注:一定要检查ssh的服务是否正常,如果不正常,重启失败,可能会造成远程连接不上的问题
service sshd restart
- 需要修改下安全配置,即关闭selinux
vi /etc/selinux/config
将
SELINUX=enforcing
修改为
SELINUX=disabled
二、配置SSH免密码登录
4. 生成公钥和私钥(可以只一路回车,生成默认的名字,或者自定义名字)
ssh-keygen -t rsa
能看到最后生成了一串乱码方框,说明配置成功。
默认在 ~/.ssh目录生成两个文件:
id_rsa :私钥
id_rsa.pub :公钥
注意:生成的公钥,有可能最后面是用户名加主机名,例如public@master,最好是将其修改为用户名加主机IP地址,如public@192.168.55.66
2.生成公钥认证文件,并更改权限
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
如果authorized_keys这个文件,没有,可以把本机生成的公钥导入此文件
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
这样还可以测试本机到本机的免密是否成功,如果ssh本机到本机都需要密码,说明存在其它问题。
3.将生成的公钥认证文件复制到其他节点机器
scp ~/.ssh/id_rsa.pub public@192.168.55.67:/home/public/id_rsa.pub
scp ~/.ssh/id_rsa.pub public@192.168.55.68:/home/public/id_rsa.pub
三、将上面的步骤在另外的几台机器上再操作一遍,将公钥都写入~/.ssh/authorized_keys这个文件中,最后再测试是否可用。
当前如果在192.168.55.66这台机器上
ssh 192.168.55.66
如果这时还需要密码,很可能是目录权限问题。查看 ll /home/ 当前用户此处是public,如果目录/home/public权限是777就不行,权限中只能本用户可以写,其它用户不能有写的权限,将权限改为755或者700。
chmod 700 /home/public
然后再试,一般就会免密成功。
注意:文件~/.ssh/known_hosts,当你ssh登录时,会自动写入登录主机的相关信息,不管成不成功,此文件都会写入,所以当你登录还需要密码时,这个文件里面也会记录登录的信息。
如果有多台机器做互信,需要把每台的公钥都放在authorized_keys文件后,就都可以互访问了。