我可以为特定用户将 sshd 连接转发到另一个端口吗?

我可以为特定用户将 sshd 连接转发到另一个端口吗?

我们有一个基于 macOS 的服务器用于 GIT,当前运行 gitolite,用户通过 SSH 连接到它,如 ssh git@servername:reponame。

现在我们想切换到在 docker 容器中运行 gitlab。由于端口 22 已被服务器使用,并且我们需要能够通过 SSH 连接到 gitlab 服务器(最好在同一端口上),因此我们正在寻找合适的解决方案。

是否可以在 sshd 中制定一条规则,如下所示:

如果连接用户是“git”,那么将其转发到localhost:2222,以使其对任何客户端透明?

答案1

我们这样做。我们有一个用于 gitlab 域的“虚拟”IP(别名)。在容器运行的节点上,我们禁用 SSHd 监听此虚拟 IP,然后将 22 转发到容器。虚拟 IP 在发生故障转移时也很方便,只需连接到不同的节点并启动容器(所有数据都是 bindmount lustre)。

答案2

不,这是不可能的。ssh协议中的用户名是在协议的后面发送的,因此在连接过程中没有办法透明地将连接转发到不同的端口/服务器。

在同一台服务器上运行不同的服务,您将必须对 git 使用不同的 URI,例如ssh://git@server:2222/path/to/repo.git

相关内容