上周遇到诡异的问题,ssh/scp连接另一个linux时显示权限问题,一直没找到合适的解决方案,总结下。
ssh/scp设置秘钥登录可以省略输入密码的部分,假设需要设置A主机免密登录B主机,设置步骤如下:
①在A主机上,ssh-keygen -t rsa 连续按回车(如果你之前生成过秘钥,可能会存在按Y/N的选项,正常选择就好)
②在A主机上,使用sz rz将~/.ssh目录下生成的id_rsa.pub公钥文件放到B主机的~/.ssh/authorized_keys文件下。
可以使用 ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.1 如果ssh不能登录的话,那就手动拷贝过去,没有authorized_keys则自己创建一个。这里需要注意一个小细节,注意下换行,有可能复制过去一行内容就变成了三行,那么登录肯定会不成功。最简单的测试方法,使用光标移动,如果复制过去的内容即时显示了三行,但是只能移动一次,那他就是一行内容,是正确的的。
③在双端主机上,ls -al ~/.ssh 将~/.ssh权限修改为700,将authorized_keys权限修改为600
如果此时还报错 Permission denied (publickey). lost connection ,错误我总结了几个:
一、可以检查一下,上述步骤是否正确,我的错误原因是因为:
其他这串秘钥是一行内容,拷贝过去自动换行,变成了三行,修改方法就改成一行就可以了。
二、登录远程主机,将/etc/ssh/sshd_config文件中的PasswordAuthentication no 改为PasswordAuthentication yes,然后重启sshd服务:systemctl restart ssh.service
三、我遇到一个特别奇怪的问题,我拷贝的.ssh/authorized_keys目录文件,原本有两行公钥,但是每隔大约十分钟就被删除了第二行,也就是说每次拷贝,只能使用一小会,就又得重新拷贝。这个问题还没有解决。
更新一版-------------------------- 上边那个没有解决的问题已经解决了,是公司安全部门的同步策略,隔一段时间会同步一次。而且如果本地可以连接到B主机,并且用的秘钥登录的话,不用在A主机上再次生成秘钥,直接使用本地的私钥从A登录B即可。