我试图添加无密码的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-add或ssh-agent 。
你应该在客户端运行ssh-agent ( varga )。 这将为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).