当前情况:
现在,为了能够使用我们的 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 方法,要么在网络级别设置某种转发。