在 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
考虑到我的源地址是动态的?