如何实现 ssh 无密码登录

Dan Nanni 的头像

·

·

·

13,910 次阅读

假设你是hostA上的一个用户"aliceA",想以用户“aliceB”的身份ssh到hostB上,但又不想输入密码。那么,你可以参考这篇教程实现ssh无密码登录。

首先,你需要以用户“aliceA”的身份登录到hostA上。

然后,使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。

$ ssh-keygen -t rsa

接下来,使用下面的命令在目标主机hostB上的aliceB用户目录下创建~/.ssh目录。如果在aliceB@hostB上已经存在.ssh目录,这一步会被略过。

$ ssh aliceB@hostB mkdir -p .ssh

最后,将hostA上用户“aliceA”的公钥拷贝到aliceB@hostB上,来实现无密码ssh。

$ cat .ssh/id_rsa.pub | ssh aliceB@hostB 'cat >> .ssh/authorized_keys'

自此以后,从aliceA@hostA上ssh到aliceB@hostB上再也不需要输入密码。(LCTT 译注:上述的创建目录并复制的操作也可以通过一个 ssh-copy-id 命令一步完成:ssh-copy-id -i ~/.ssh/id_rsa.pub aliceB@hostB

疑难解答

  1. 即使在密钥认证生效后,你可能仍然需要输入SSH密码。如果遇到这种情况,请检查系统日志(如/var/log/secure)以查看是否出现下面的异常。

Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys

在这种情况下,密钥认证的失败是由于~/.ssh/authorized_keys文件的权限或拥有者不正确。一般情况,如果这个文件对除了你之外的所有用户都可读,就会出现这个错误。用下面的方式改变文件的权限以修正错误。

$ chmod 700 ~/.ssh/authorized_keys 

via: http://xmodulo.com/how-to-enable-ssh-login-without.html

作者:Dan Nanni 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

4 条回复

  1. 老沙 的头像
    老沙

    挺有用的小技巧。不过如果密钥文件被盗……

    来自郑州
  2. 丶Nature 的头像
    丶Nature

    需要盗用的前提是破解当前主机的权限,如果能破解当前的机器root还需要盗用密钥来破解密码?

    来自南京
  3. 老沙 的头像
    老沙

    就怕权限不是破解的……

    来自郑州
  4. 丶Nature 的头像
    丶Nature

    还是那句话,能接触这台主机 就等于不需要密码了

    来自南京

回复 丶Nature 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注