2011-11-21 174 views
3

我在這裏破解我的堅果試圖讓這個工作,也許有人可以幫助我更好地理解這一點。我發現了一個問題,那幾乎是我想要做的叫什麼Accessing Subversion repository with 2 hops using svn+ssh protocolsvn over 2 ssh隧道

這是我想做的事:

我想籤我的Live服務器上的svn項目,但SVN服務器無法在互聯網上訪問。所以,我需要使用SSH隧道到我的主要網絡服務器,然後進入SVN服務器,然後將文件檢出到Live服務器

這裏爲清楚起見一些虛構設置:

  1. 直播服務器:(爲eth0)10.123.210.123
  2. 的網絡服務器(爲eth0)10.89.123.123和(eth1的)192.168.1.1
  3. 的SVN服務器:(爲eth0)192.168.1.8

所有服務器都使用端口9222上的密鑰文件進行身份驗證,服務器上的用戶管理員使用有效密鑰。因此,管理員可以從幾乎任何服務器登錄到每臺服務器,Live無法直接從邏輯上訪問SVN。

所以根據@小量貸在上述文章中,我應該在Live服務器上安裝/home/admin/.ssh/config與

Host mysubversionserver 
     HostName = 10.89.123.123 
     ProxyCommand = ssh 192.168.1.1 /usr/local/bin/nc -w 10 192.168.1.8 %p 
     ForwardX11 = no 
     User = admin 
     ForwardAgent = yes 

除了這個事實,我無法連接這個設置,我真的不明白這將如何幫助我到達顛覆服務器。一旦使用這個SSH,我在顛覆服務器上,但我需要在這個隧道的Live服務器上....或者我只是想念一些真正明顯的東西?

+1

這對我來說看起來很合理。不過,從運行中的服務器上運行'ssh -P 9223:svn-server:9222 network-server'可能會更容易,建立svn-server的ssh-port到本地端口9223的端口轉發;您可以使用'ssh -P 9223 localhost'通過轉發的SSH連接連接到svn服務器。 – Rup

+0

好吧,目前爲止我認爲配置是錯誤的,Host =必須是HostName =這會得到更多,但我仍然得到一個與ssh連接失敗:'連接到主機192.168.1.1端口9222:連接超時'如果我SSH進入服務器,做一個nslookup該IP它的工作原理...我拉出我的頭髮在這裏.. –

+0

所以,我在家裏在Windows上用膩子,做幾乎相同的事情,它沒有汗水。遠程連接到網絡服務器,使用locahost:9223到SVNServer:9222 ...然後是localty:9223的另一個putty實例,我在...這在Linux中不是那麼困難。我必須得到這個權利,它現在是buggin –

回答

2

這麼多閱讀一些更多的閱讀後,我終於找到了我的問題了一些解釋,並開始認識到這個配置將無法正常工作,而是@Rup是正確的,儘管他的語法是有點不對勁。

如果想關閉這個問題,對其他搜索靈魂一些有用的信息,這裏是使得隧道與配置文件在linux的正確方法

Host FireWallServer 
     HostName <FireWall Server IP> 
     User admin 
     IdentityFile ~/.ssh/id_rsa 
     PasswordAuthentication no 
     Compression yes 
     ForwardX11 no 

Host SVNServer 
     ProxyCommand ssh FireWallServer nc <SVN Server IP> %p 
     ForwardAgent yes 

你的第一個朋友是男子ssh_config中因爲它包含了你需要的信息。一個很好的解釋我就​​ 發現所以最終的最好的解決辦法是做一個本地端口盼着隧道:

ssh -L 9223:<SVN Server IP>:80 [email protected]<FireWall Server IP> 

現在打開另一個終端並使用這個隧道你的svn查詢:

svn info http://localhost:9223/<path to your svn repo> 

一情侶必備品不過是需要這樣的工作:

  1. 所有服務器必須是配置ACC在端口9222 EPT SSH用戶管理與ssh_key
  2. 所有服務器都必須SSH守護程序配置爲使用同一端口
  3. SVN必須配置爲在Apache的mod_dav的運行

希望它是用於某人:)

0

爲了SVN work through a proxy server您可能需要在Live服務器上的顛覆配置文件中的特殊設置,例如在~/.subversion/servers

[global] 
http-proxy-host=10.89.123.123 
http-proxy-port=9222 

在你的情況下,代理服務器可能會是您使用的網絡服務器連接到實時系統(如有疑問,請諮詢您的網絡管理員)。如果您想使用其他命令(如wget behind a proxy server)訪問Internet,則設置環境變量http_proxy很有用。

+0

我的svn使用的是mod的http,所以我只需要通過HTTP到SVN服務器,那麼它應該工作,沒有守護進程,我認爲 –