1.简介
相信大家都有一个经历,服务器间登陆、scp拷贝操作时,让你输入被登陆、被拷贝服务器的密码。
不知道各位是什么感受,我是很崩溃的,因为我哪记得那么多密码啊(好吧,我就是记性不好)。这就引出了
服务器之间免密码登陆的需求了,官方一点,叫做ssh互信配置。
ssh互信配置的原理简单来说,就是各自服务器存放了目标主机的证书,当执行登陆时,自动完成认证,从而
不需要再输入任何密码。
2.配置过程
为了简单明了说完这个过程,以下不详细解释每个命令(请自行google):
① 登陆服务器A
② 建立ssh相关目录: mkdir ~/.ssh
③ 设置ssh的权限: chmod 700 ~/.ssh
④ 生成RSA公钥: ssh-keygen -t rsa (请一直回车,直至提示结束)
⑤ 将公钥(名为id_rsa.pub文件)追加到认证文件(名为authorized_keys文件)中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
⑥ 设置认证文件的权限:
chmod 600 ~/.ssh/authorized_keys
OK,服务器A的配置就差不多了,服务器B,服务器C等的操作与此一模一样。但是有一个地方需要提醒,
最后服务器A,B,C三台的 authorized_keys 文件中应该包含这三台服务器的公钥,不然配置会失败。你可以这样做,
在A上生成好authorized_keys后,把它拷贝到机器B,在B上将B的公钥信息追加到authorized_keys后,将它拷贝到
C,在C上将C的公钥信息追加到authorized_keys后,再将这最终的authorized_keys拷贝会机器A和B,并覆盖A和B
原来的authorized_keys的文件。如果你不这样做的话,你可能会遇到,从服务器A ssh到 服务器B,不用输密码,但是反过来就需要输密码的问题了。
一、Linux的免密登陆:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 目标机器ip地址/主机名
验证是否成功:ssh 目标机器
如果不需要输入密码了就表示设置成功。
二、设置了免密码登陆但是还是需要输入密码:
权限保证:1、authorized-keys 的权限为 600
2、home、账户所在的目录如hadoop、.ssh这三个文件的权限都必须设置为700,缺少一个都不行哦,因为sshd文件中明确说过如果上述三个文件可以被所有者之外的对象进行写操作(可以man sshd命令查看英文说明),免密登陆将会拒绝访问。
如果上面的你都照做了,还是要输入密码,那么你可以看看.ssh文件的父目录是否是700权限。
最后用ssh 目标机器 测试一下吧,相信你一定可以成功!
####################################
转自:https://blog.csdn.net/hrn1216/article/details/51568830
https://blog.csdn.net/weixin_40678969/article/details/78992296