如何從指定連接埠連接ssh?

如何從指定連接埠連接ssh?

我知道如何使用 ssh 連接“到”某個連接埠。

ssh user@remotehostip -p XXX

有沒有辦法建立ssh我的本機電腦將使用的連接埠?

答案1

這並不容易實現。如何做到這一點取決於在哪裡可以看到來源連接埠:在本地也是如此,還是從外部網路的角度來看它是正確的連接埠就足夠了?

您可以在 LXC 容器中執行 SSH 用戶端。我從來沒有這樣做過,所以我無法向你詳細解釋。但是您創建一個虛擬網路接口並將其附加到此容器,以便ssh使用此接口,因為它是它看到的唯一(外部)接口。

在主機系統上,應該能夠偵測到來自該介面的資料包。因此,您可以使用 Netfilter 的 NAT (SNAT) 來重寫來源位址,如下所示:

iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234

當然,如果您連接到 22 以外的端口,則這不起作用(或變得更加複雜)。

答案2

您正在尋找的命令語法可能是這樣的。 ssh -p XXX user@remotehostip 您必須變更選項的順序。現在嘗試一下,它對我有用。此致。

答案3

如果您透過路由器進行端口轉發,一個簡單的解決方案是將入站端口設置為您想要的任何端口,並將本地端口設置為22。但實際上是從網路外部連接您將使用您的入站連接埠。如果你只是想阻止機器人在 22 上攻擊你的機器,這應該可以做到。

這可能對您的具體問題沒有幫助,但我想很多人都會因為這個原因而來到這裡。

答案4

基於 Hauke Laging 的無容器答案,在執行 ssh 用戶端之前新增此 iptables 規則就足夠了:

iptables -t nat -A POSTROUTING -d <remotehostip> -p tcp --dport 22 -j SNAT --to-source :1234

ssh 會話開啟後可以刪除該規則。

相關內容