我有一個小型本地網絡。只有其中一臺機器可用於外部世界(這是不容易改變的)。我希望能夠進行設置,使得不在標準端口上的ssh請求轉到另一臺機器上。這可能嗎?如果是這樣,怎麼樣?是否可以將通過某個端口進入的ssh請求轉發給其他機器?
哦,所有這些機器都運行的是Ubuntu或者OS X.
我有一個小型本地網絡。只有其中一臺機器可用於外部世界(這是不容易改變的)。我希望能夠進行設置,使得不在標準端口上的ssh請求轉到另一臺機器上。這可能嗎?如果是這樣,怎麼樣?是否可以將通過某個端口進入的ssh請求轉發給其他機器?
哦,所有這些機器都運行的是Ubuntu或者OS X.
另一種方式去將使用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。
您可以使用端口Fowarding做到這一點。看看這裏:
http://portforward.com/help/portforwarding.htm
有關於如何你的路由器設置端口轉發請求,此頁面上的說明:
http://www.portforward.com/english/routers/port_forwarding/routerindex.htm
我會這麼說,但你打我吧!無論如何,我只是想補充一點,還有-R選項:
ssh -R 8022:myinsideserver:22 [email protected]
不同之處在於您連接到/來自哪臺機器。我的老闆在不久之前向我展示了這個技巧,並且知道這絕對是一件非常棒的事情......我們在防火牆後面,需要對機器進行外部訪問......他通過ssh -R繞過了另一臺機器那是可以訪問的...那麼與該機器的連接被轉發到防火牆後面的機器中,因此您需要使用-R或-L,這取決於您所在的機器和您正在使用的機器。只要你轉發的端口(在這種情況下是8022端口)不低於受限制的範圍(我認爲它是1024,但是我是1024),我確信你可以使用普通用戶。可能會被誤認爲),因爲這些是「保留」端口。無關緊要的是你將它轉發到一個「受限」的端口,因爲該端口沒有被打開(機器只是通過隧道向它發送流量,它不知道隧道),8022端口是開放,因此受到限制。
編輯:只要記住,隧道只是開放,只要最初的SSH仍然打開,所以如果超時或你退出它,隧道將被關閉。
在Ubuntu ,您可以安裝Firestarter,然後使用它的Forward Service功能,從機器上的非標準端口轉發SSH流量,並將外部訪問權限轉移到網絡中機器上的端口22。
在OS X上,您可以編輯/etc/nat/natd.plist文件以啓用端口預留功能。
沒有搞亂防火牆規則,你可以設置一個〜/ .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
我一直在想如何做到這一點,終於遇到了這個!我希望我可以多次點擊向上箭頭! – 2018-02-13 20:23:02