【问题标题】:How to disable ssh-agent forwarding如何禁用 ssh-agent 转发
【发布时间】:2017-11-04 06:31:04
【问题描述】:

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

【问题讨论】:

    标签: linux ssh


    【解决方案1】:

    手册页的这一部分很关键:

    由于使用每个参数的第一个获得的值,更多 特定于主机的声明应在开头附近给出 文件,最后是一般默认值。

    将带有 ForwardAgent 的 Host * 放在末尾,将带有 ForwardAgent 的特定主机放在 .ssh/config 的开头

    【讨论】:

      【解决方案2】:

      这已经有一年多了,但我遇到了同样的问题并找到了一个可行的配置选项。

      当我从家用计算机连接到工作计算机时,我遇到了 Git 命令不再起作用的问题。我发现这是因为连接的家庭计算机的公钥被转发,而不是为那个 GitHub 帐户配置。

      -a 命令行选项通过不转发身份验证代理连接解决了该问题。我还认为等效的~/.ssh/config 选项是这样的:

      ForwardAgent no
      

      当那不起作用时,我寻找其他配置变量,最后发现这个起作用了。

      IdentityAgent none
      

      【讨论】:

        【解决方案3】:

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

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

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

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

        如前所述,您只需向ssh 提供正确的参数。

        回到问题:

        为什么机器 @remote_not_trusted_ip 能够访问 ssh-agent 转发的密钥,即使 ~/.ssh/config 文件声明如下?

        Host *
          ForwardAgent no
        

        因为命令行参数-A的优先级高于配置文件。

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

        如果您不想转发ssh-agent,请不要使用-A 命令行选项。请改用-a 命令行选项。

        【讨论】:

        • @BrunoBronosky 感谢您的反馈。这个答案是对另一个答案的补充,它解释了“为什么会这样”,而不仅仅是“如何解决它”。我在 OP 问题中添加了明确的答案。我希望现在的答案更容易理解。
        • 优秀。投票已更改。
        【解决方案4】:

        您正在使用 -A 选项进行连接。 man ssh 说:

        -A 启用身份验证代理连接的转发。

        你应该不用-A来连接,只需使用:

        ssh user@remote_not_trusted_ip
        

        CLI args 将优先于 ssh 配置文件。

        顺便说一句,如果你想连接到你信任的ip而不转发,你也可以使用:

        ssh -a user@trusted_ip
        

        -a 禁用身份验证代理连接的转发。

        【讨论】:

          猜你喜欢
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 2022-08-19
          • 2012-02-02
          • 2020-08-14
          • 2023-01-13
          • 2014-02-21
          • 2020-12-25
          相关资源
          最近更新 更多