如何优先考虑 ssh 转发代理而不是身份文件?

如何优先考虑 ssh 转发代理而不是身份文件?

我以前能够通过 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仅在您需要的主机上使用它。

相关内容