通过另一台服务器连接到 GIT repo

通过另一台服务器连接到 GIT repo

当前情况:

现在,为了能够使用我们的 git 存储库,我们必须使用 VPN,因为 repo 服务器没有公共 IP。

目标:

我想要完成的是设置一个具有公共 IP 的服务器并允许 git 通过它连接到 repo 服务器(私有 IP)。

这可以通过在用户的本地配置中使用 ProxyCommand 轻松实现,但为了让用户的生活更轻松,我正在寻找一些不需要用户端任何特殊配置的东西。

有人能帮忙吗?谢谢。

答案1

首先,我确实认为您应该采用 ProxyCommand 方法。从长远来看,它将使每个人的生活更轻松。

话虽如此,您*可以*做的是设置外部节点上的 git 用户,以将 git 命令中继到内部节点。首先,这将涉及将类似以下内容放入/etc/ssh/sshd_config在外部节点上。

Match User git
    ForceCommand /usr/local/bin/git_wrapper
    AllowTcpForwarding no
    PermitTTY no

随着git_wrapper脚本看起来像这样。

#!/bin/bash

case "$SSH_ORIGINAL_COMMAND" in
    git*)
    ssh -o BatchMode=yes [email protected] "$SSH_ORIGINAL_COMMAND"
    ;;
    *)
    echo "Git only"
    ;;
esac

你需要确保外部.主机:〜git / .ssh /已知主机包含内部主机的主机密钥。

然后是关于 external.host 能够以以下身份登录的部分[电子邮件保护]。您可以通过让您的用户启用代理转发或给予[电子邮件保护]ssh 密钥[电子邮件保护]:〜/.ssh /授权密钥. 这两种选择都有安全隐患。

警告:请注意,对 的限制$SSH_ORIGINAL_COMMAND主要是为了防止用户意外执行超出他们应执行的操作。如果您不相信您的用户不会在 external.host 或 internal.host 上运行任意命令,请不要采用这种方法。

顺便问一下,我是否说过我认为您确实应该采用 ProxyCommand 方法?要么采用 ProxyCommand 方法,要么在网络级别设置某种转发。

相关内容