我以前能够通过 ssh 代理转发连接到我的服务器:
ssh -A my.server
然后从那里连接到服务器网络上的另一台主机,该主机在文件中包含我的公钥authorized_keys
:
server:~# ssh another.host
这工作得很好,直到我在服务器上创建了公钥/私钥对,~/.ssh/id_rsa
并且~/.ssh/id_rsa.pub
现在,当我尝试连接时,我得到:Permission denied (publickey).
~/.ssh/id_rsa
我相信正在发生的事情是在尝试转发代理的密钥之前尝试服务器的密钥并失败。
可能有办法增加允许尝试的次数my.server
,但我希望有另一个配置选项来优先尝试从代理转发的密钥 - 类似于如何IdentitiesOnly
IdentityFile
用于控制为特定的尝试尝试哪些密钥服务器 - 或禁用~/.ssh/id_rsa
对特定主机尝试使用默认密钥的选项 - 无需重命名它并为所有其他主机指定它(允许它保持真正的默认值)
另外,我不想添加来自 的公钥my.server
-我只希望在使用代理转发another.host
登录时发生该连接。my.server
答案1
实际情况比这稍微复杂一些。客户端提供所有可用的密钥,其中几个密钥失败后,它就会完全失败。
-vvv
如果添加到命令行,您可以从详细日志中看到这一点。使用-o IdentitiesOnly=yes
可以提供帮助。
它还可以帮助减少您本地的密钥数量ssh-agent
。
我能想到的最后一件事是将其id_rsa
从默认位置移动(客户端始终读取默认位置中的文件并且无法将其关闭)并配置为~/.ssh/config
仅在您需要的主机上使用它。