ssh-add 没有效果

ssh-add 没有效果

我正在尝试为充当服务器的 Mac OS X 10.8.3 添加无密码 ssh 访问权限。我遵循了如下说明:

http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

但是当我执行 ssh 时[电子邮件保护]我仍然被提示输入密码。

看完之后:

https://superuser.com/questions/419122/how-to-use-ssh-private-key-to-log-in-without-entering-passphrase-every-time-on-m

当我在客户端机器上执行 ssh-add 时,我得到:

[michael@varga (Sun May 26 09:56:32) ~]% ssh-add
Enter passphrase for /Users/michael/.ssh/id_rsa: 

但是当我尝试在服务器的命令行上使用 ssh-add 命令时,它什么也没做:

[michael@maz (Sun May 26 10:00:25) ~]% ssh-add
[michael@maz (Sun May 26 10:01:03) ~]% ssh-add -K 

我认为这可能与我遇到的仍然需要我提供密码的问题有关。

关于如何修复 ssh-add 有什么建议吗?

答案1

您不需要在您的服务器上运行ssh-add或。ssh-agent

您应该ssh-agent在客户端上运行(varga)。这将为ssh程序创建一个套接字以检查是否已解锁密钥。ssh-agent将打印一些您必须定义的环境变量 - 您通常使用 来执行此操作eval $(ssh-agent),它既启动代理又导出所有必要的变量。

从您的问题中我可以看出,ssh-add要求输入密码并将密钥添加到代理,这意味着代理正在运行并且所有这些变量都已导出(至少在您用于运行的 shell 中ssh-add)。但现在要ssh查看代理,您必须确保这些变量也在运行的会话中导出ssh

在服务器上运行代理时不需要输入密码,这ssh-add意味着代理正在服务器上运行(您不需要它),并且根本没有需要添加的密钥,因此它会默默退出。

为什么ssh客户端要求输入密码?可能是因为您向代理添加了错误的密钥。您确定可以登录服务器吗使用密钥文件? 你确定当你尝试登录时会要求输入密码吗密钥文件,而不是普通用户密码?首先确保公钥身份验证正常工作。

答案2

我猜测是以下两种情况之一。

您的服务器上没有运行 ssh-agent。要验证服务器上是否运行了 ssh-agent,请查看是否设置了 SSH_AUTH_SOCK 环境变量:

echo $SSH_AUTH_SOCK

另一种可能性是,您误解了 ssh 密钥对的工作方式。您在服务器上安装了公钥吗?如果您有 ssh-copy-id,这很简单。在客户端上:

ssh-copy-id user@server

如果没有,您需要将客户端上的 ~/.ssh/id_rsa.pub 的内容插入到服务器上的 ~/.ssh/authorized_keys 中。例如(假设您没有在服务器上设置其他密钥):

scp ~/.ssh/id_rsa.pub user@server:.ssh/authorized_keys
ssh user@server chmod 0600 .ssh/authorized_keys

诊断此问题的一种方法是运行 ssh 并显示详细输出:

ssh -v user@host

它应该向您显示密钥对可用于身份验证:

debug1: Authentications that can continue: publickey,password

它实际上尝试使用密钥进行身份验证:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/$user/.ssh/id_rsa

并且公钥认证成功:

debug1: Authentication succeeded (publickey).

相关内容