如何使链接SSH混帐工作

我正试图绕开一个愚蠢的防火墙问题。 我试图通过代理ssh链接SSH访问:

〜/ GIT中链:

#!/bin/bash ssh hosticangetto ssh $* # End 

接着:

 $ export GIT_SSH=~/git-chain $ git clone ssh://[email protected]/somerepo.git E, [2012-02-07T12:50:21.434913 #28359] ERROR -- : git command not recognized fatal: The remote end hung up unexpectedly 

传递给我的脚本的参数是:

 [email protected] git-upload-pack 'somerepo.git' 

我已经检查从hosticangetto到git仓库的密钥,一切都很好。

我不知道为什么这个失败。 mercurial-e转换之前我已经用mercurial做过这样的事情了。

将这些行添加到~/.ssh/config (或者如果它不存在,用这些行创build该文件):

 Host somerepostore.com ProxyCommand ssh -W %h:%p hosticangetto 

然后取消设置GIT_SSH。

这告诉ssh ssh使用hosticangetto作为代理。 这比你的解决scheme更好,因为在你的解决scheme中,数据包在hosticangetto上解密,然后在远程主机上为somerepostore.com重新encryption。 使用这样的代理命令意味着数据包在本地计算机上为somerepostore.comencryption,并且这些encryption数据包通过hosticangetto传递。

我认为你需要跟TTY做点事情。

这不起作用:

ssh server1 ssh server2

它只是挂在那里。

这似乎奏效了:

ssh -t server1 ssh server2

ssh -v server1 ssh server2查看详细的输出,看起来好像第一个/外部ssh完成了,然后到达server1,但是我不执行server2的内部/第二个ssh。