我正在尝试访问托管在防火墙后面的群集上的GIT仓库。当我在校园(防火墙后面)时,我可以直接访问集群,我可以从校外SSH到特定的机器,然后在需要时ssh到集群。
我尝试使用以下方式设置隧道:
sudo ssh -L 9418:cluster:9418 username@ssh.server
但我仍然无法从我的机器上运行“git push”。我知道我错过了一些东西但却无法弄明白。
编辑: 我将〜/ .ssh / config修改为:
Host cluster
NoHostAuthenticationForLocalhost yes
Hostname localhost
Port 9418
运行git push时出错:
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
答案 0 :(得分:3)
我猜测Git远程网址的主机名部分是cluster
而不是localhost
。 git config remote.origin.url
的输出是多少?如果它是这样的:
git://cluster/repo.git
然后将其更改为:
git://localhost/repo.git
ssh端口转发如何工作是ssh客户端打开本地计算机上的端口(在您的情况下为9418)并侦听连接。每当应用程序连接到该端口时,您的ssh客户端会询问ssh服务器(在您的情况下为ssh.server
)以打开到隧道远程端的连接(在您的情况下为cluster
端口9418)。发送到本地端口的所有数据都通过现有的ssh会话转发到ssh服务器。然后,ssh服务器将数据注入其与目标计算机的连接。因此,从您的角度来看,您正在连接到本地计算机。从目的地的角度来看,您是从ssh服务器连接的。
此外,您的ssh配置似乎不正确。该配置告诉您的客户端,无论何时您希望ssh到名为cluster
的计算机,它都应该连接到localhost
端口9418.根据您提供的ssh命令,localhost端口9418将转发到{{ 1}}的端口9418. cluster
的ssh服务器是否真的在端口9418上侦听而不是默认端口22?我猜cluster
实际上是在端口9418上运行Git服务器,在这种情况下你根本不需要修改你的ssh配置。
答案 1 :(得分:0)
很奇怪,因为这通常应该有效:this有帮助吗?你有ssh配置位吗?