在 Debian Stretch VM(在 Windows 7 主機上的 VirtualBox 中運行)上,我想透過 SSH 連接到特定的遠端主機(我們稱之為myServer
IP 12.34.56.78
)。為此,我使用 Android 智慧型手機作為 USB 調製解調器,效果很好:我可以訪問互聯網並產生一些「ping」和 HTTP/HTTPS 流量,甚至可以使用以下命令打開 SSH 連接:
ssh [email protected] -b a.b.c.d -p portNumber -i ~/.ssh/id_rsa
注意:a.b.c.d
是連接時分配給我的 USB 介面的動態 IP 位址
為了讓事情變得更容易,我想擁有所有這些設置,~/.ssh/config
這樣我只需輸入ssh myServer
:
Host myServer
HostName 12.34.56.78
Port portNumber
# BindAddress a.b.c.d <== commented because this is part of the question
# BindInterface usb0 <== same as above
User httqm
IdentityFile ~/.ssh/id_rsa
- 我可以取消註釋該
BindAddress
行並指定 IP 位址,這可以工作,但與完整的 SSH 命令行相比沒有提供任何增益,因為它a.b.c.d
是動態的 使用綁定介面選項(不帶
BindAddress
)失敗並顯示錯誤訊息:~/.ssh/config: line 154: Bad configuration option: bindinterface ~/.ssh/config: terminating, 1 bad configuration options
由於該BindInterface
指令是由 Openssh 7.7 引入的(https://www.openssh.com/releasenotes.html)而我有:
$ dpkg -l openssh-client
openssh-client 1:7.4p1-10+deb9u6
為了解決這個問題,我正在考慮幾個解決方案:
使用指令定義一條路線
ip route ...
,以便所有目標都myServer
透過 USB 介面。到目前為止,我已經嘗試過這樣的命令:ip route add to 12.34.56.78 protocol static dev usb0
該命令本身沒有返回錯誤,但我無法打開 SSH 連接ssh myServer
,我什至無法 ping 它。
定義 Netfilter 規則,以便所有進出 12.34.56.78 的流量都通過 usb0 介面。那行得通嗎?我應該研究這個解決方案嗎?
openssh-client
從向後移植升級(如果可用)
您能否解釋一下哪些可行/不可行(以及為什麼)?您建議如何實現我的目標,即使用簡短的命令列連接到我的 SSH 主機,例如ssh myServer
考慮到我的來源位址是動態的?