1.前置条件
免密登录需要至少两台虚拟机,这里作为演示,在同一台电脑同时开启两个虚拟机
为避免文件权限问题,可以开始先进入超级权限模式下:
su -l
(1)修改主机名
修改当前虚拟机的主机名,主机名文件在/etc目录下,直接输入以下命令按 i 进入写模式即可修改:
vi /etc/hostname
为了方便演示,这里hadoop01虚拟机改为A,hadoop02改为B,按ESC后,输入以下命令保存:
:wq
(2)配置名字对应IP地址
下一步修改hosts文件,该文件在/etc目录下,输入以下命令按 i 进入写模式即可:
vi /etc/hosts
同样的操作进行保存即可,以上步骤在hadoop02同样再操作一次
2.SSH密钥配置
(1)生成密钥
回到根目录下,输入 ssh-keygen -t rsa 自动生成hadoop01的密钥
ssh-keygen -t rsa
一直按回车知道出现命令输入即可
进入到 /root/.ssh 文件夹下可以看到生成的密钥,需要用到的是 id_rsa.pub
cd /root/.ssh
ls
同样的我们需要在hadoop02虚拟机也就是B生成密钥,但是为了方便快捷,可以直接从A登陆到B进行操作,输入以下命令即可(因为前面配置了主机名和IP地址对应,所以这里直接登陆主机名即可):
ssh B
可以看到已经进入到了B的操作界面,此时操作的是B虚拟机,同样的操作进行生成密钥
如图所示,在B虚拟机也同样生成了密钥,可以看到我们的操作是在hadoop01也就是A虚拟机上进行的,这里需要注意一下,当然,分开去B虚拟机进行操作也可以,没有限制
(2)密钥配置
将B虚拟机的密钥 id_rsa.pub 复制一份出来发送给A虚拟机,输入如下命令:
cp id_rsa.pub id_rsa_B.pub
scp id_rsa_B.pub root@192.168.31.45:/root/.ssh
注意:A和B各自的密钥不要搞混!
如图所示为发送成功,期间需要A虚拟机的密码
然后退出B虚拟机回到A虚拟机,(因为A虚拟机进入了超级权限,所以主机名不是A)输入:
exit
回到A虚拟机后,回到 /root/.ssh 目录下可以看到有B虚拟机发过来的密钥,输入:
cd /root/.ssh
ls
下一步在A虚拟机中将当前.ssh文件夹下的A和B的公钥进行cat到authorized_keys文件,然后可以看到.ssh文件夹下多了一个 “钥匙” authorized_keys,输入以下命令即可:
cat id_rsa_A.pub id_rsa_B.pub >> authorized_keys
同样的登陆到B虚拟机,把A和B两个公钥进行cat操作,如下图所示:
然后在A虚拟机尝试登陆B虚拟机,输入:
ssh B
可以看到不需要密码就进入B虚拟机中,再去hadoop02(B)虚拟机试试登录到A虚拟机
同样的从B虚拟机登录到A虚拟机也是不需要密码
好了,SSH免密登录就到这里,希望对你有帮助!