ssh-agent 转发可以通过ssh -A ....
我发现的大多数参考资料都指出,本地机器必须配置~/.ssh/config为使用以下代码启用 AgentForwarding:
Host <trusted_ip>
ForwardAgent yes
Host *
ForwardAgent no
Run Code Online (Sandbox Code Playgroud)
但是,使用此配置,当通过隧道进入远程机器时,我仍然能够看到我的本地机器密钥,使用ssh -A user@remote_not_trusted_ip,并运行ssh-add -l.
根据上面提供的配置,我预计 ssh-agent 转发会失败并且本地机器的密钥不会被ssh-add -l.
@remote_not_trusted_ip即使~/.ssh/config文件说明以下内容,为什么机器能够访问 ssh-agent 转发的密钥?
Host *
ForwardAgent no
Run Code Online (Sandbox Code Playgroud)
如何防止 ssh-agent 将密钥转发到未明确定义的机器~/.ssh/config?
如何防止 ssh-agent 将密钥转发到未明确定义的机器
~/.ssh/config?
这是默认行为。如果您不允许它进入~/.ssh/config,它将不会被转发。但是命令行参数具有更高的优先级,因此它会覆盖配置中定义的内容,如手册页中所述ssh_config:
ssh(1)按以下顺序从以下来源获取配置数据:
- 命令行选项
- 用户的配置文件 (~/.ssh/config)
- 系统范围的配置文件 (/etc/ssh/ssh_config)
因此,如前所述,您只需要为ssh.
为什么即使 ~/.ssh/config 文件声明以下内容,机器@remote_not_trusted_ip 也能够访问 ssh-agent 转发的密钥?
Run Code Online (Sandbox Code Playgroud)Host * ForwardAgent no
因为命令行参数的-A优先级高于配置文件。
如何防止 ssh-agent 将密钥转发到未明确定义的机器
~/.ssh/config?
不要使用-A,如果你不想让你的前进的命令行选项ssh-agent。请改用-a命令行选项。
小智 6
这已经有一年多了,但我遇到了同样的问题,并找到了一个有效的配置选项。
当我从家庭计算机连接到工作计算机时,我遇到了 Git 命令不再起作用的问题。我发现这是因为连接的家庭计算机的公钥被转发,而该公钥没有为该 GitHub 帐户配置。
命令-a行选项通过不转发身份验证代理连接解决了该问题。我还认为等效的~/.ssh/config选项是这样的:
ForwardAgent no
Run Code Online (Sandbox Code Playgroud)
当这不起作用时,我寻找其他配置变量,最后发现这个起作用了。
IdentityAgent none
Run Code Online (Sandbox Code Playgroud)
小智 5
您正在使用 -A 选项进行连接。man ssh 说:
-A 启用身份验证代理连接的转发。
您应该在没有 -A 的情况下进行连接,只需使用:
ssh user@remote_not_trusted_ip
Run Code Online (Sandbox Code Playgroud)
CLI args 将优先于 ssh 配置文件。
顺便说一句,如果你想连接到你信任的ip而不转发,你也可以使用:
ssh -a user@trusted_ip
Run Code Online (Sandbox Code Playgroud)
-a 禁用身份验证代理连接的转发。
| 归档时间: |
|
| 查看次数: |
13244 次 |
| 最近记录: |