ssh-add没有效果

我试图添加无密码的SSH访问我的Mac OS X 10.8.3作为一个服务器。 我已经按照这样的指示:

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

但是,当我做ssh [email protected]我仍然得到密码提示。

看完后:

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 

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

任何build议如何解决ssh-add?

您不需要在服务器上运行ssh-addssh-agent

你应该在客户端运行ssh-agentvarga )。 这将为ssh程序创build一个套接字来检查解锁的密钥。 ssh-agent会打印出你需要定义的一些环境variables – 你通常用eval $(ssh-agent)来完成这个工作,它们都启动代理并导出所有必要的variables。

正如我从你的问题可以看出, ssh-add要求input密码并将密钥添加到代理,这意味着代理正在运行,并且所有这些variables都被导出(至less在用于运行ssh-add的shell中)。 但是现在要让ssh看到代理,您必须确保这些variables也在运行ssh的会话中导出。

事实上, ssh-add在服务器上运行时并不要求input密码,这意味着代理程序在服务器上运行(不需要它),并且没有密钥可以添加,所以它静静地退出。

为什么在客户端的ssh请求密码? 可能是因为您向代理添加了错误的密钥。 您确定可以使用密钥文件login到服务器吗? 你确定当你试图login时,是要求密钥文件的密码,而不是一个正常的用户密码? 确保首先使用pulbic-keyauthentication。

我猜两件事之一。

要么你没有在服务器上运行的ssh代理。 要validation您的服务器上是否运行了ssh-agent,请查看是否设置了SSH_AUTH_SOCK环境variables:

 echo $SSH_AUTH_SOCK 

另一种可能是你误解了ssh keypairs应该如何工作。 你是否在服务器上安装了公钥? 如果你有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 

它应该告诉你,密钥对可以用于authentication:

 debug1: Authentications that can continue: publickey,password 

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

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

公钥validation成功:

 debug1: Authentication succeeded (publickey).