2011-06-18 79 views
0

我想訪問承載在防火牆後面的羣集上的GIT repo。當我在校園內(位於防火牆後面)時,我可以直接訪問羣集,並且可以從校園外SSH連接到特定的計算機,然後在需要時通過ssh連接到羣集。git推送使用端口轉發(SSH隧道)

我已經嘗試設置使用隧道:

sudo ssh -L 9418:cluster:9418 [email protected] 

但我仍然無法從我的計算機上運行「混帳推」。我知道我錯過了一些東西,但無法完全弄清楚。

編輯: 我修改的〜/ .ssh /配置有:

Host cluster 
    NoHostAuthenticationForLocalhost yes 
    Hostname localhost 
    Port 9418 

,當我運行混帳推得到的錯誤:

ssh_exchange_identification: Connection closed by remote host 
fatal: The remote end hung up unexpectedly 

回答

0

很奇怪,因爲這通常應該工作: this有幫助嗎?你有ssh配置位?

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)以打開到隧道遠程端的連接(您的案例中的端口號爲01218294)。所有發送到本地端口的數據都通過現有的ssh會話轉發到ssh服務器。然後,ssh服務器將數據注入到與目標機器的連接中。所以從你的角度來看,你連接到本地機器。從目的地的角度來看,你是從ssh服務器連接的。

此外,你的SSH配置似乎不正確。該配置告訴你的客戶端,無論何時你想ssh到名爲cluster的計算機,它應該連接到localhost端口9418.根據你給的ssh命令,localhost端口9418被轉發到cluster的端口9418.是cluster的s ssh服務器真的監聽端口9418而不是默認端口22?我猜cluster實際上是在端口9418上運行一個Git服務器,在這種情況下,你根本不需要修改你的ssh配置。