【问题标题】:Setup ssh server to forward connections [closed]设置 ssh 服务器以转发连接 [关闭]
【发布时间】:2026-02-13 16:35:02
【问题描述】:

在我的网络中,目前有一台计算机可以处理一堆 IT 存储库,所有这些都在“git”用户上。 用户还可以登录自己的帐户来运行其他程序。目前他们在与 git 服务器相同的机器上执行此操作。我想在另一台计算机上实现这一点。

我正在尝试查看是否可以将 ssh 服务器设置为路由器上端口 22 的默认值,但将与该机器上的 git 用户的任何连接转发到 git 仍然存在的旧服务器。

这样anyone@ourserver.com 登录到新服务器,但git@ourserver.com 登录到现有服务器。

所有涉及的机器都运行/将运行 ubuntu。

我不希望用户必须手动设置 git 遥控器才能通过新计算机登录。这不是解决办法。它必须是无缝的:)

【问题讨论】:

  • 这不是一个与编程相关的问题,因此在本网站上是题外话。您应该在unix.stackexchange.comserverfault.com 上询问
  • @Let_Me_Be 不同意。这意味着程序化解决方案,因此它不是题外话。
  • @lig 这是一个配置问题。
  • 谢谢,我意识到这很可能不是正确的地方,虽然我不确定在哪里问...我通常不经常使用论坛,但我知道 *。

标签: git ubuntu ssh


【解决方案1】:

您可以将用户gitSHELL 设置为您自己的脚本(在bash 中或在python 中)。这将连接到旧服务器,并将充当这两个连接的代理。当然,您还需要处理用户的公钥来转发身份验证。

【讨论】:

  • 我喜欢这个,我将不得不试一试,看看它是否有效,我想我可以编写一个 bash 脚本,它将通过管道连接到一个新的 ssh 连接。有点搜索以找到如何传递密钥。
【解决方案2】:

虽然@lig 提供了需要编写自定义脚本的服务器端解决方案,但您始终可以进行开箱即用的客户端配置。假设您在桌面上有最新版本的 OpenSSH(有 -W 开关),您可以在 ~/.ssh/config 文件中执行此操作:

Host git.ourserver.com
User git
ProxyCommand ssh -W the.git.server:22 ourserver.com

当用户执行 'ssh git.ourserver.com' 时,它首先会转到 ourserver.com,然后转发连接。如果两台服务器都使用相同的公钥进行身份验证,并且您使用的是 ssh-agent(或无密码 ssh 密钥),则无需进行两次身份验证。

应该在您通过 git 推/拉时起作用,只要您的 git 的“远程”与您的 ~/ssh/config 文件中的“主机”完全匹配。

【讨论】:

  • 这对我来说似乎比更改 git 远程 url 更难。
  • 我读过他的情况,听起来是这样的:他将路由器上的端口 22 转发到一台主机,他不想再托管 git。为了让 ssh 使用相同的 IP/端口来访问路由器 IP 后面的另一台服务器,ssh 的默认主机必须转发连接。
  • 我已经使用这种风格的 ssh 配置有一段时间了,但在这种情况下它不是解决方案,因为我希望转发对用户透明。