我是新手ssh-agent
,遇到了我所认为的“漏洞”。
情况
- 我有一个受密码保护的私钥。
- 我想使用,
ssh-agent
所以我不会每次都写密码ssh
。 ssh-agent
添加私钥(根据ssh-agent -l
显示私钥)。- 然而当我尝试
ssh
使用私钥(感谢该~/.ssh/config
文件)访问远程服务器时,ssh-agent
仍然要求我输入密码!
环境
我使用的Linux 4.5.7-202.fc23.x86_64 #1 SMP Tue Jun 28 18:22:51 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
是Fedora,ssh
版本是OpenSSH_7.2p2, OpenSSL 1.0.2h-fips
.这里有两个序列不能使用(我认为的)GNOME 3 密钥环代理和ssh-agent
.
这里是~/.ssh/config
:
IdentitiesOnly yes
[..]
Host root.w.com
HostName 92.1.2.3
User user
Port 22
IdentityFile /home/user/.ssh/key-rsa.priv
GNOME 3 密钥环代理
user@local:~$ ssh server-key
Enter passphrase for key '/home/user/.ssh/key-rsa.priv':
You have new mail.
Last login: Sat Aug 13 10:41:46 2016 from some.ip.dot.org
user@remote:~$
Connection to <remote-ip> closed.
user@local:~$ echo $SSH_AUTH_SOCK
/run/user/1000/keyring/ssh
user@local:~$ echo $SSH_AGENT_PID
user@local:~$ ssh-add ~/.ssh/key-rsa.priv
Enter passphrase for /home/user/.ssh/key-rsa.priv:
Identity added: /home/user/.ssh/key-rsa.priv (/home/user/.ssh/key-rsa.priv)
user@local:~$ ssh-add -l
4096 SHA256:aZl81hzUczH+sX+/5+tCJHln11xqta62RbtzLQt5LKE /home/user/.ssh/key-rsa.priv (RSA)
user@local:~$ ssh server-key
Enter passphrase for key '/home/user/.ssh/key-rsa.priv':
✘ user@local:~$
ssh-agent
代理人
user@local:~$ eval $(ssh-agent)
Agent pid 3169
user@local:~$ echo $SSH_AGENT_PID
3169
user@local:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-nqpXUUf2qNpT/agent.3168
user@local:~$ ssh-add -D
All identities removed.
user@local:~$ ssh-add ~/.ssh/key-rsa.priv
Enter passphrase for /home/user/.ssh/key-rsa.priv:
Identity added: /home/user/.ssh/key-rsa.priv (/home/user/.ssh/key-rsa.priv)
user@local:~$ ssh server-key
Enter passphrase for key '/home/user/.ssh/key-rsa.priv':
✘ user@local:~$
问题
- 我应该怎么做才能
ssh-agent
不询问密码? - 知道为什么这些不起作用吗?
我的问题类似于这个问题尽管我阅读了答案并且该解决方案对我不起作用。
答案1
我刚刚发现IdentitiesOnly
似乎需要本地计算机上的公钥才能正常工作。
如果本地计算机上没有公钥,即使私钥位于代理中,当然还有远程计算机上的公钥,系统也会始终提示我输入密码。
公钥路径与带附加的私钥路径相同.pub
。
答案2
正如@ilkkachu 所说,问题是IdentitiesOnly
。
在您的Host
部分中,只需添加
IdentitiesOnly no