如何实现 ssh 无密码登录

假设你是本地client上的一个用户"userA",想以用户“userB”的身份ssh到远程主机serverB上,但又不想输入密码。那么,你可以参考这篇教程实现ssh无密码登录。
首先,你需要以用户“userA”的身份登录到client上,然后,使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。
$ ssh -keygen -t rsa
可以看到本地client上用户userA的~/.ssh目录下有 xxx_rsa 和 xxx_rsa.pub 来命名的一对文件,有 .pub 后缀的文件就是公钥,另一个文件则是密钥。

接下来,使用下面的命令在远程主机serverB上的userB用户目录下创建.ssh目录。如果在userB@serverB上已经存在.ssh目录,这一步会将略过。
$ ssh userB@serverB$ mkdir -p .ssh

最后,将clientA上用户“userA”的公钥拷贝到userB@serverB上~/.ssh目录下authorized_keys文件中,来实现无密码ssh登录。
$ ssh-copy-id -i ~/.ssh/id_rsa.pub userB@serverB

疑难解答:
1.userB@serverB上~/.ssh目录下没有authorized_keys文件可以手动创建并修改文件权限为700 $touch authorized_keys $chmod 700 authorized_keys
2.在密钥认证生效后,你仍然需要输入SSH密码。如果遇到这种情况,请检查系统日志(如/var/log/secure)以查看是否出现下面的异常。
Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys在这种情况下,密钥****认证的失败是由于~/.ssh/authorized_keys文件的权限或拥有者不正确。一般情况,如果这个文件对除了你之外的所有用户都可读,就会出现这个错误。可以通过修改authorized_keys文件的权限为700来修正错误。
$ chmod 700 ~/.ssh/authorized_keys
总结:ssh-keygen 产生公钥与私钥对
ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中
将本机的公钥复制到远程机器的authorized_keys文件中可以手动复制不一定用ssh-copy-id

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容