这里为了方便说明问题,假设有A和B两台安装了centos的主机。目标是实现A、B两台主机分别能够通过ssh免密码登录到对方主机。不同主机的配置过程一样,这里介绍A主机的配置过程。
目标:实现A免密码登录到B
约定:本机A。目标机B
1 前期准备
事先在AB主机分别创建好要免密码登录的用户名,在/etc/hosts文件增加主机名和ip。
创建新用户:useradd linuxidc
设置密码:passwd linuxidc,输入自己想要的密码即可,之后su - linuxidc切换用户
修改主机名:vim /etc/sysconfig/network,加入hostname=master,注销系统之后即可看到修改成功
修改hosts文件:vim /etc/hosts
192.168.88.101 master
192.168.88.102 slave1
2 环境配置
修改A机 sshd的配置文件(root权限, Centos7 不用)
# RSAAuthentication yes
# PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys
重启sshd服务(root权限, Centos7 不用)
# Centos6:
service sshd restart # 重启 sshd 服务
# Centos7:
systemctl restart sshd # 重启 sshd 服务
3 A机生成公钥和私钥
从root切换回要免密码登录的用户linuxidc,执行命令。
# ssh-keygen -t rsa # 全部回车
默认在用户linuxidc的家目录(~/.ssh/)生成两个文件:
id_rsa: 私钥
id_rsa.pub:公钥
4把公钥导入到认证文件
4.1 导入到本机A机
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
完成这一步,再按照步骤5修改本机相关文件权限,可以免密码登录本机。可以输入以下命令验证。
ssh localhost
如果能够登录,即验证成功。
4.2 导入到目标B主机
4.2.1 在本机A机操作,传送到目标B机
scp ~/.ssh/id_rsa.pub root@目标主机ip或主机名:/home/id_rsa.pub
注意把文件传送到目标主机时,要用B机root用户,否则会因权限不够而拒绝。输入目标主机密码后,出现OK即传输成功。
4.2.2 登录到B主机,把公钥导入到认证文件
使用要被免密码登录的用户名linuxidc,登录到B主机。然后执行以下操作。
# cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
再按照步骤5修改相关文件权限,完成免密码登录设置。
5 目标机更改相关文件的权限
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
至此,完成免密码登录设置。
6 免密码登录到远程机器
[hadoop@master ~]$ ssh slave
Last login: Wed Jan 22 11:20:11 2020 from l1
[hadoop@slave ~]$