如何配置 SSH 以通过 OpenVPN 连接?

如何配置 SSH 以通过 OpenVPN 连接?

我在公司有一台台式电脑,我喜欢使用通过 SSH 连接的 Unison 将其与家里的电脑保持同步。我有时也喜欢使用 SSH 远程登录到工作电脑。

我的工作网络正在启动一项新策略,该策略仅允许通过 VPN 进行网络外部的连接。

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

需要明确的是,我不想每次想要通过 SSH 连接到工作计算机时都必须手动连接到工作 VPN。我也不想一直连接到工作 VPN。

请注意,我可以自由更改客户端(我的家用电脑)和服务器(工作电脑)的 SSH 配置。另外,我认为这没什么关系,但所有涉及的机器都是 Linux 机器。我使用的是 OpenSSH,工作 VPN 是 openVPN。

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

答案1

我想到了一些选择。

Shell 脚本

你可以编写一个 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

代理命令

您可以尝试使用 openSSH 来proxycommand实现此目的:

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如果您想覆盖整个子网则使用。

答案2

假设您有一个通过隧道连接到 OpenVPN 服务器/主机的客户端 PC。

对于通过 VPN 隧道的 SSH:https://askubuntu.com/questions/1069846/connected-to-openvpn-server-but-cant-ssh

在 Openvpn 主机上:

$sudo ufw enable    
$ sudo ufw allow 1194/udp comment "Allowing OpenVPN Connections"    
$ sudo ufw allow from 10.8.0.1/24 to any port 22 proto tcp comment "SSH allowed for VPN clients"   

在客户端:

确保 OpenSSH 已安装并正在运行,并且防火墙上的端口 22 已打开。

然后:

$ ssh [email protected]       (change “user” to your login name on the server/host).  

相关内容