0

我正在尝试访问托管在防火墙后面的集群上的 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
4

2 回答 2

3

我猜 Git 远程 URL 的主机名部分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 被转发到cluster的端口 9418。cluster的 ssh 服务器是否真的在监听在端口 9418 而不是默认端口 22 上?我猜cluster实际上是在端口 9418 上运行 Git 服务器,在这种情况下,您根本不需要修改 ssh 配置。

于 2011-06-18T18:43:58.653 回答
0

很奇怪,因为这通常应该有效:有帮助吗?你有 ssh 配置位吗?

于 2011-06-18T15:22:29.343 回答