17

我想在仅允许 http 代理访问的公司防火墙后面访问(克隆/推送/拉取)私有(通过 ssh)git 存储库。我已经编写了一个强大的 Java(守护程序)程序(基于 JSCh 类库),它允许我利用本地和远程端口转发,我希望利用它,但是当我尝试设想如何设置时,我的大脑受伤了.

git repo 仓库(创造一个短语)位于 foo.server.com/var/git 所以自然倾向,忽略fireall,设置一个克隆将是:

$ git clone ssh://foo.server.com/var/git/myrepo.git

但是防火墙会阻止这个命令。我倾向于尝试类似的东西

$ git clone ssh://localhost:8022/var/git/myrepo.git

其中 localhost:8022 被转发到 foo.server.com:22

那么这条路值得走吗?有没有更简单但仍然安全的解决方案?我应该注意哪些陷阱或陷阱?

4

3 回答 3

40

使用socat.ssh/config这样的:

Host=foo.server.com
ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd

你应该能够ssh并且foo.server.com

git clone ssh://foo.server.com/var/git/myrepo.git

预计工作。

于 2011-11-24T10:14:57.713 回答
8

您可以进行正常的 ssh(命令行)会话吗?如果是这样,git也应该工作。

使用 ssh 时,git 应该在 .ssh/config 中选择您的配置选项。如果这还不够,您可以将环境变量 GIT_SSH 指向修改后的 ssh 版本(或 shell 脚本包装器)。

于 2009-11-13T12:35:00.517 回答
2

这是我在 Linux 机器下工作的设置(端口 18081 上的本地主机是代理)。

cat ~/.ssh/config
Host  github.com
  User git
  ProxyCommand nc -x localhost:18081 -Xconnect %h %p
于 2020-07-08T16:43:18.003 回答