我已经设置我的计算机与远程服务器进行公/私身份验证,但不知何故它今天不工作。
我已经完成 ssh key-gen -t rsa,然后将其 scp 到远程。
我可以不使用密码进行 scp(使用 pub/priv 密钥),但每当我尝试 SSH 时,它都会要求输入密码。
我该怎么做才能仅通过密钥进行身份验证?
答案1
您应该检查您是否有(sshd_config):
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
UsePAM yes <-- That one is usually the last line of the sshd_config
然后,您的公钥将添加到您的authorized_keys中~/.ssh/
。最后一个(UsePAM yes
)非常重要,因为如果禁用,它将强制您使用unix帐户进行身份验证。PAM在这里表示私钥身份验证足以登录。最后,如果仍然无法解决,您可能需要检查PAM配置。
答案2
您需要将服务器上的公钥添加到授权密钥中:
ssh-keygen -i -f keyfilename.pub >> ~/.ssh/authorized_keys2
或者
cat keyfilename.pub >> ~/.ssh/authorized_keys2
答案3
首先,在远程服务器上:
/usr/sbin/sshd -de -p 1234
第二,在您的计算机上:
ssh-vp 1234
您可能会发现错误。
或者您也可以在这里发布它们。
答案4
如果您可以使用密钥进行 scp 但不能进行 ssh,则听起来您的 scp 客户端可以找到密钥,但 ssh 客户端找不到。
既然您提到了这一点,ssh-keygen -t rsa
我就会假设您在某种 UNIX 上使用 OpenSSH,并且将密钥保存在某个用户帐户的默认位置。
运行 ssh 客户端时,您是否以拥有密钥的用户(例如su
ed 或ed)以外的用户身份登录?如果您也需要从该帐户进行无密码 ssh,则可能需要使用该帐户,然后将该帐户的公共 ssh 密钥与另一个密钥一起放入远程服务器的授权密钥文件中。sudo
ssh-keygen