2008-09-05 72 views

回答

11

另一種方式去將使用ssh隧道(發生在客戶端)。

你會做這樣一個SSH命令:

ssh -L 8022:myinsideserver:22 [email protected] 

連接你這是從外部(myoutsideserver)訪問的機器,並創建一個隧道通過ssh連接到端口22(標準SSH端口)只能從內部訪問的服務器上。

然後你會做這樣的另一個ssh命令(在離開第一個仍然連接):

ssh -p 8022 [email protected] 

即連接到端口8022上的本地主機隨後會通過第一ssh連接隧道帶你過myinsideserver。

在myoutsideserver上可能有些事情需要做,以允許轉發ssh端口。我現在仔細檢查一下。

編輯

嗯。 ssh手冊頁說:**只有超級用戶才能轉發特權端口。 **

這種暗示我第一個SSH連接必須作爲根。也許別人可以澄清這一點。

它看起來像只要不需要超級用戶權限的轉發端口(在這種情況下,8022)不是特權端口(如22)。感謝您的澄清Mike Stone

+1

我一直在想如何做到這一點,終於遇到了這個!我希望我可以多次點擊向上箭頭! – 2018-02-13 20:23:02

3

@Mark Biek

我會這麼說,但你打我吧!無論如何,我只是想補充一點,還有-R選項:

ssh -R 8022:myinsideserver:22 [email protected] 

不同之處在於您連接到/來自哪臺機器。我的老闆在不久之前向我展示了這個技巧,並且知道這絕對是一件非常棒的事情......我們在防火牆後面,需要對機器進行外部訪問......他通過ssh -R繞過了另一臺機器那是可以訪問的...那麼與該機器的連接被轉發到防火牆後面的機器中,因此您需要使用-R或-L,這取決於您所在的機器和您正在使用的機器。只要你轉發的端口(在這種情況下是8022端口)不低於受限制的範圍(我認爲它是1024,但是我是1024),我確信你可以使用普通用戶。可能會被誤認爲),因爲這些是「保留」端口。無關緊要的是你將它轉發到一個「受限」的端口,因爲該端口沒有被打開(機器只是通過隧道向它發送流量,它不知道隧道),8022端口是開放,因此受到限制。

編輯:只要記住,隧道只是開放,只要最初的SSH仍然打開,所以如果超時或你退出它,隧道將被關閉。

0

在Ubuntu ,您可以安裝Firestarter,然後使用它的Forward Service功能,從機器上的非標準端口轉發SSH流量,並將外部訪問權限轉移到網絡中機器上的端口22。

在OS X上,您可以編輯/etc/nat/natd.plist文件以啓用端口預留功能。

0

沒有搞亂防火牆規則,你可以設置一個〜/ .ssh/config文件。

假設10.1.1.1是'網關'系統,10.1.1.2是'客戶'系統。

Host gateway 
    Hostname 10.1.1.1 
    LocalForward 8022 10.1.1.2:22 

Host client 
    Hostname localhost 
    Port 8022 

可以打開經由SSH連接到 '網關':

ssh gateway 

在另一個終端,打開到客戶端的連接。

ssh client 
相關問題