如何配置 SSH 通过 OpenVPN 连接?

eve*_*oil 6 ssh openvpn openssh

我在工作时有一台桌面,我喜欢使用 Unison(通过 SSH 连接)与我的家用计算机保持同步。有时我也喜欢使用 SSH 远程访问工作计算机。

我的工作网络正在启动一项新策略,该策略仅允许来自网络外部的连接(如果通过 VPN)。

有没有办法可以调整我的 SSH 配置,以便每当它尝试登录工作计算机时,都会通过工作 VPN?

需要明确的是,我不想每次想要 SSH 连接到工作计算机时都手动连接到工作 VPN。我也不想永久连接到工作 VPN。

请注意,我可以自由更改客户端(我的家庭计算机)和服务器(工作计算机)的 SSH 配置。另外,我认为这并不重要,但所有有问题的机器都是 Linux 机器。我使用的是 OpenSSH,工作 VPN 是 openVPN。

澄清:我不想永久连接到工作 VPN 的主要原因是不必担心遵守他们的服务条款。所以我只想通过 VPN 发送 SSH 流量,而不是其他任何东西。

stu*_*eja 4

我想到了几个选择。

外壳脚本

你可以写一个shell脚本

  • 启动 openVPN
  • 启动 SSH
  • 当 SSH 断开连接时停止 openVPN

    #!/bin/bash /usr/bin/openvpn /home/user/ovpn/config.ovpn ssh user@host pkill -SIGTERM -f 'openvpn --conf /home/user/ovpn/config.ovpn'

之后,您可以为其添加别名,例如alias vpnssh='/home/scriptname.sh',和/或将其添加到您的.bashrc.

代理命令

您可以尝试使用 openSSHproxycommand来实现:

ssh -o ProxyCommand="/usr/bin/openvpn /home/user/ovpn/config.ovpn" user@host

在这两种情况下

您需要告诉 openVPN 您不想通过隧道路由所有内容。因此,假设 192.168.0.1 是您的工作桌面,请将以下内容添加到您的 openVPN 配置文件中

route-nopull route 192.168.0.1 255.255.255.255

route 192.168.0.0 255.255.255.0如果您想到达整个子网,请使用。