ssh-agent转发可以使用ssh -A ...
完成。
我发现大多数引用声明本地计算机必须使用以下代码配置~/.ssh/config
以启用AgentForwarding:
Host <trusted_ip>
ForwardAgent yes
Host *
ForwardAgent no
但是,使用此配置,当我使用ssh -A user@remote_not_trusted_ip
隧道进入远程计算机并运行ssh-add -l
时,我仍然可以看到本地计算机密钥。
从上面的配置中,我预计ssh-agent转发会失败,ssh-add -l
不会列出本地计算机的密钥。
为什么机器@remote_not_trusted_ip
能够访问ssh-agent转发密钥,即使~/.ssh/config
文件声明如下?
Host *
ForwardAgent no
如何阻止ssh-agent将密钥转发到~/.ssh/config
未明确定义的计算机?
答案 0 :(得分:4)
如何阻止ssh-agent将密钥转发到
~/.ssh/config
未明确定义的计算机?
这是默认行为。如果您不允许~/.ssh/config
,则不会转发它。但命令行参数具有更高的优先级,因此它会覆盖配置中定义的内容,如ssh_config
的手册页中所述:
ssh(1)
按以下顺序从以下来源获取配置数据:
- 命令行选项
- 用户的配置文件(〜/ .ssh / config)
- 系统范围的配置文件(/ etc / ssh / ssh_config)
醇>
如前所述,您只需要向ssh
提供正确的参数。
为什么机器@remote_not_trusted_ip能够访问ssh-agent转发密钥,即使〜/ .ssh / config文件声明如下?
Host * ForwardAgent no
因为命令行参数-A
的优先级高于配置文件。
如何阻止ssh-agent将密钥转发到
~/.ssh/config
未明确定义的计算机?
如果您不想转发-A
,请不要使用ssh-agent
命令行选项。请改用-a
命令行选项。
答案 1 :(得分:3)
您正在使用-A选项进行连接。男子ssh说:
-A启用转发身份验证代理连接。
您应该在没有-A的情况下连接,只需使用:
ssh user@remote_not_trusted_ip
CLI args将优先于ssh配置文件。
顺便说一句,如果您想在不转发的情况下连接到您信任的IP,您也可以使用:
ssh -a user@trusted_ip
-a禁用转发身份验证代理连接。
答案 2 :(得分:1)
这已经一年多了,但是我遇到了同样的问题,并使用了一个有效的配置选项。
当我从家用计算机连接到工作计算机时,出现问题,导致Git命令不再起作用。我发现这是因为已转发连接家用计算机的公钥,而该公钥未为此GitHub帐户配置。
-a
命令行选项通过不转发身份验证代理连接来解决此问题。我还认为等效的~/.ssh/config
选项是这样:
ForwardAgent no
当那行不通时,我寻找了其他配置变量,最后发现这行了。
IdentityAgent none