2011-12-14 100 views
3

在我的網絡中,目前有一臺計算機處理一堆IT回購站點,所有這些都是'git'用戶。 用戶也可以在自己的帳戶上登錄以運行其他程序。目前他們在與git服務器相同的機器上執行此操作。我想在另一臺電腦上做到這一點。設置ssh服務器轉發連接

我想看看是否有可能使ssh服務器在路由器上的端口22的默認值,但轉發任何連接到該機器上的git用戶到舊服務器,其中git仍然是。

這樣[email protected]登錄到新服務器,但[email protected]登錄到現有服務器。

所有涉及的機器運行/將運行ubuntu。

我不希望用戶必須手動設置那裏的git遠程登錄通過新的計算機。這不是一個解決方案。它必須是無縫的:)

+1

這不是一個編程相關的問題,因此它在這個網站上是不合適的。您應該詢問http://unix.stackexchange.com或http://serverfault.com –

+1

@Let_Me_Be不同意。這意味着程序化的解決方案,因此它不是偏離主題。 – lig

+0

@lig這是一個配置問題。 –

回答

1

你可以設置SHELL爲用戶git到你自己的腳本(在bash中或在python中說)。這將連接到舊的服務器,並將作爲這兩個連接的代理。因爲你需要處理用戶的公鑰以轉發認證。

+1

這我喜歡,我將不得不試一試,看看它是否有效,我想我可以只是寫一個bash腳本,將管道到一個新的SSH連接。搜索位以查找如何獲取傳遞的密鑰。 – mcfedr

0

雖然@lig提供了一個需要編寫自定義腳本的服務器端解決方案,但您始終可以進行客戶端配置,這些配置可以直接使用。假設你有OpenSSH的桌面上最新的版本(有-W開關),你可以在你~/.ssh/config文件做到這一點:當用戶執行「SSH git.ourserver.com」它會

Host git.ourserver.com 
User git 
ProxyCommand ssh -W the.git.server:22 ourserver.com 

首先轉到ourserver.com,然後轉發連接。如果兩臺服務器使用相同的公鑰進行身份驗證,並且您使用的是ssh-agent(或無密碼ssh密鑰),則不必進行兩次身份驗證。

這個應該當你推/通過git拉,只要你的git的「遠程」與你的~/ssh/config文件中的「主機」完全匹配。

+0

這似乎比改變我的git遠程網址更難。 – lig

+0

我讀了他的情況,聽起來像這樣:他將路由器上的端口22轉發給一個主機,他不想再託管git。爲了使用相同的IP /端口ssh到達路由器IP後面的另一臺服務器,該ssh的默認主機必須轉發連接。 –

+0

我已經使用了ssh config的這種風格一段時間,但在這種情況下,它不是解決方案,因爲我希望轉發對用戶是透明的。 – mcfedr