问题:
ssh-keygen -t rsa
生成秘钥,然后通过
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@ip地址
发送公钥到需要免密登录的主机用户。但完成后通过
ssh 用户名@ip地址
还是需要输入密码。
解决:
按网上的几个方法试,怎么都不行。最后发现不能照抄,还是要先了解原理,看懂下图就差不多了。
简单的说就是A生成公钥后把公钥的串(字符串)添加到B的authorized_keys文件中。
然后检查发现这个命令 “ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@ip地址” 有时候执行之后并没有在B的authorized_keys文件中添加公钥(可以在命令执行前后查看一下authorized_keys文件是否有变化)。问题就比较明显了。既然ssh-copy-id不行,那就直接scp。把A的公钥id_rsa.pub通过scp拷贝到B,然后用cat命令把内容添加到authorized_keys文件最后: cat id_rsa.pub >> ~/.ssh/authorized_keys。(据说vi可能会产生多余的换行,最好用cat)(20230209更新,其实可以先把id_rsa.pub的内容拷贝到本地文本编辑器,然后检查如果有空格就删除,再直接复制到目标主机的authorized_keys文件里面就行了)
最后验证通过。
另外要注意的是权限问题。.ssh目录要700,authorized_keys文件要600。也有说是755和655点,反正后面两个不能有写权限。
参考文档: