如何配置系统通过 ssh 反向隧道/代理使用 git?

Posted

技术标签:

【中文标题】如何配置系统通过 ssh 反向隧道/代理使用 git?【英文标题】:how to configure system to use git via an ssh reverse tunnel / proxy? 【发布时间】:2021-03-07 21:16:20 【问题描述】:

环境: 我的本地主机可以访问我的 ***。 我的远程主机需要通过我的本地主机访问 ***。 我只能从本地主机 ssh 到远程主机。我已经设置了一个隧道来访问我的远程主机上的 shell。

我使用密钥从 localhost 到 remotehost 设置了 ssh,没有密码提示。

这允许我从本地主机运行 VNC 以访问我的远程主机。

问题: 我的远程主机有 git repos 需要更新,但是通过本地主机的 ***。即当我在远程主机上执行git pull 命令时,它将通过从本地主机创建的隧道访问 *** git 存储库。

我已经阅读了关于 ssh -R 和 ssh .config 具有 ProxyCommand 的信息,但是把它放在一起是一团糟。

【问题讨论】:

【参考方案1】:

您可以在.ssh/config 中使用RemoteForward 选项

HOST remoteHost
   hostname remotehost.somewhere.com
   user <username>
   RemoteForward 127.0.0.1:2022 <***-GitHost>:22

这会将端口 22 从您的 *** 发布到您的远程主机,但将端口号更改为 2022。

在您的远程主机上,您可以通过 ssh(以及 git)使用该端口,例如

ssh myuser@localhost -p 2022

或者编辑远程主机上的 .ssh/config

HOST ***-gitHost
   hostname localhost
   port 2022

那么您的git pull 应该无需任何修改即可工作

【讨论】:

杰布,这行得通!也谢谢你的解释。当我现在 git pull 时,系统会提示我输入密码。带有和不带有 ForwardAgent 的 IdentityFile 指令都不起作用。这是我的最后一块拼图。 所有与 localhost 配置中使用的 ForwardAgent 一起工作。 @Harry 对于不同的问题,您应该提出一个新问题。评论区不适合这个

以上是关于如何配置系统通过 ssh 反向隧道/代理使用 git?的主要内容,如果未能解决你的问题,请参考以下文章

将 ssh 隧道反向访问公司防火墙后面的系统的最佳方法是啥?

内网接口调用,ssh反向隧道与nginx反向代理

apt-get 通过隧道代理安装,但 ssh 仅来自客户端

ssh隧道理解

如何使用代理跳转(堡垒主机)通过 ssh 隧道连接到 mongodb 服务器

ssh隧道代理连接