使用具有特定网络接口的 ssh

axe*_*l22 43 ssh routing vpn

我正在使用openconnect连接到 vpn。输入凭据后,我得到以下信息:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection
Run Code Online (Sandbox Code Playgroud)

运行ifconfig显示我有一个tun0具有特定 IP 地址的新网络接口。

问题:如何ssh只使用网络接口,tun0以便我可以访问该专用网络上的计算机?

编辑:

我的网络配置 ( route -n) 似乎是这样的:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
Run Code Online (Sandbox Code Playgroud)

Ric*_*rri 48

决定 TCP 数据包应该通过哪个接口的不是 ssh 客户端,而是内核。简而言之,SSH 要求内核打开到某个 IP 地址的连接,内核通过查询路由表来决定使用哪个接口。

(以下假设您使用的是 GNU/Linux;所有 Unices 的一般概念都相同,但要运行的命令的细节和输出的格式可能会有所不同。)

您可以使用命令route -n和/或 ip route show显示内核路由表 。

OpenConnect 应该为tun0接口添加了一行;与该线路匹配的任何地址的连接都将通过该接口进行路由。例如,route -n在我的笔记本电脑上运行,我得到以下输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
Run Code Online (Sandbox Code Playgroud)

这意味着到 192.168.122.0/24(即,根据CIDR 表示法,地址为 192.168.122.0 到 192.168.122.255 )网络中的主机的连接将通过接口路由virbr0;那些到 169.254.0.0/16 和 10.30.0.0/24 的将通过eth0,其他任何东西(0.0.0.0 线)将通过 eth0 路由到网关主机10.30.0.1。


小智 13

我不知道它是什么时候引入的,但是 RHEL7 上的 OpenSSH 客户端在其联机帮助页中有这个:

 -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.
Run Code Online (Sandbox Code Playgroud)

不如可以选择界面,而是关闭。


Haf*_*fiq 5

只是添加一个答案。您可以-b在访问时使用标志并定义源 IP。

格式 + 示例

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
Run Code Online (Sandbox Code Playgroud)