SSH 代理转发是否存在任何风险?

信息安全 SSH 打开sh
2021-08-16 13:10:19

我刚刚意识到我需要 SSH 代理转发才能推送到一台 Git 服务器,然后将提交转发到 Github.com。我从未使用过 SSH 代理转发,也不了解启用此功能的安全隐患。我是否必须信任远程服务器才能允许 SSH 代理转发到它?

2个回答

是的,如果您允许此服务器的代理转发,您必须信任远程服务器(特别是如果您对更多服务使用相同的密钥)。这样做的恶意 root 或具有 root 访问权限的邪恶管理员可以在您连接到该服务器期间冒充您对其他服务器进行身份验证。

状态仍然比永久访问密钥或从您那里窃取密钥要好,当您将私钥复制到服务器时会发生什么,但这仍然是一个问题,因为您没有确认您真的想要使用您在代理中的密钥进行加密。

为 github 使用单独的密钥可能是个好主意。在您不信任的服务器上对重要存储库进行中间步骤克隆可能也是您不想要的。

这个问题已经有几年了,事情已经发生了变化。

在默认配置下,ssh 代理转发仍然是一个安全问题。

PuTTY 和 OpenSSH 在代理转发方面添加了许多功能,并且根据客户端、配置和操作系统,代理转发比在远程服务器上使用受密码保护的私钥更安全。

此组合仅适用于 linux 机器!(请参阅有关 windows 的注释,未测试的 macos)。

如果使用代理转发,则必须使用 ssh-askpass 或 fido2 令牌保护私钥。

推荐的方法是将 PuTTY 与 OpenSSH 代理结合使用。PuTTY 能够检测和缓解最新版本中的欺骗攻击。

当使用 PuTTY>=0.76 时,您应该使用Disable "trivial" authentication (SSH-2 only)此选项可以在“连接 -> SSH -> Auth”下找到。在旧版本 (>0.71) 中,您可以使用信任标志来检测欺骗攻击。

不应使用 Pageant(PuTTY 的代理),因为它不支持 fido2 令牌或 ssh-askpass。这就是 OpenSSH 代理的用武之地。

您只需启动 ssh 代理(如果尚未启动)。启动 PuTTY 后,无需进一步配置即可使用 OpenSSH 代理。

使用此设置,您必须确认私钥的每次使用,并且不可能滥用或欺骗转发的代理。

笔记:

从 Windows 10 开始,可以额外安装 OpenSSH 客户端,但此版本与 PuTTY 不兼容。原因在于,windows 版本使用命名管道,而 PuTTY 仅支持套接字。