如何禁用ssh-agent转发

时间:2017-06-02 19:03:11

标签: linux ssh

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未明确定义的计算机?

3 个答案:

答案 0 :(得分:4)

  

如何阻止ssh-agent将密钥转发到~/.ssh/config未明确定义的计算机?

这是默认行为。如果您不允许~/.ssh/config,则不会转发它。但命令行参数具有更高的优先级,因此它会覆盖配置中定义的内容,如ssh_config的手册页中所述:

  

ssh(1)按以下顺序从以下来源获取配置数据:

     
      
  1. 命令行选项
  2.   
  3. 用户的配置文件(〜/ .ssh / config)
  4.   
  5. 系统范围的配置文件(/ etc / ssh / ssh_config)
  6.   

如前所述,您只需要向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