2011-04-29 28 views
1

我有一臺工作機器,可以通過兩次ssh訪問,一次到我公司網絡上公開可見的ip地址,然後從那裏sshing到我的本地計算機在專用網絡上。git通過ssh彈出並獲取彈跳

當我離開網絡時,在桌面上執行git push和fetch的最簡單方法是什麼?

回答

5

一種方法是建立一個ssh隧道。在本地計算機上的一個窗口:

ssh -L 2222:internal_work_address:22 public_gateway 

這將設置連接到internal_work_address端口22。本地主機端口2222上監聽器,你可以修改你的Git遠程連接到本地主機:22。

或者,您可以使用sshuttle幾乎透明地設置它。

+1

如果你走隧道的路線,你也可以添加一個部分到你的.ssh/config中,例如'Host workmachine | HostKeyAlias workmachine | HostName localhost | User workusername | Port 2222'(其中每個'|'都是一個換行符+標籤)。然後,您可以在建立隧道後通過名稱來引用工作機器,而不是使用localhost:2222。 – 2011-04-29 23:58:32

+0

你可以提供一些細節嗎?例如,假設我有兩臺機器「mylaptop」和「mydesktop」,mydesktop位於工作網絡上,mylaptop位於我的家庭網絡上。此外,假設我可以ssh到「foo.com」以進入我的工作網絡,從我可以從ssh到「1.2.3.4」的地方訪問mydesktop。什麼是順序步驟以及哪些機器? – jonderry 2011-04-30 00:43:02

+0

好的,計算出來:步驟是'ssh -f -N -L 2222:1.2.3.4:22 foo.com'將筆記本電腦端口2222通過foo.com轉發到1.2.3.4上的端口22。然後,'git fetch ssh:// localhost:2222/path/to/repo + refs/heads/*:refs/remotes/mydesktop/*',或者將相應的遠程添加到'.git/config'。 – jonderry 2011-04-30 01:31:44