我有一台 Ubuntu (18.04) Linux 服务器,主网络接口eth0
,它分配了 2 个 IP 地址(通过systemd-networkd
)。ip route
路由细节非常简单,只需通过 IP1 发送所有传出内容。但是有时我需要建立来自另一个 IP 地址 IP2 的传出连接(即 ssh 连接)。我可以更改整个服务器的默认路由,但有没有更好的方法?我可以运行magiccommand --use-ip=$IP2 ssh whatever
我在机器上有 root 权限。我尝试了 firejail,但它出错了Error: the software is not supported for /31 networks
?!我想通过 ssh 进入另一台服务器,该服务器只允许来自 IP2 的 SSH 连接,而不允许来自 IP1 的 SSH 连接。
答案1
足够新的版本ssh
有-B bind_interface
和-b bind_address
选项。
Ubuntu 18.04 的 ssh可能只有-b bind_address
这里需要的选项。因此,要在连接时使用 IP2 作为源 IP 地址,而不是路由提示的默认 IP 地址,可以执行以下操作:
ssh -b $IP2 whatever
答案2
如果你有多个接口,你可以绑定到特定接口或 IP 地址。这需要应用程序支持。支持它的应用程序通常有命令行参数。对于使用哪些命令行参数没有标准。
对于ssh
,man ssh
则说:
-B bind_interface
Bind to the address of bind_interface before attempting to connect to the destination host. This is only useful on systems with more than one
address.
-b bind_address
Use bind_address on the local machine as the source address of the connection. Only useful on systems with more than one address.
因此您可以使用接口或 IP 地址。