使用 sshuttle Linux 命令创建基于 SSH 的 VPN
虚拟专用网络 (VPN) 是通过互联网隐藏您的身份和位置的一种方法。此外,如果您尝试远程连接到工作场所或家庭设备,VPN 可以方便地路由您的流量。您可以选择从可信来源购买 VPN,甚至可以通过 SSH 创建自己的 VPN。
外包 VPN 会带来不同的安全风险。但是,您可以使用 sshuttle Linux 命令从主机创建 VPN 连接,并通过 SSH 连接到远程设备。您必须在主机上安装 Python 并以 root 身份连接才能正常工作。至于远程机器,不需要是root。只要您有密码,sshuttle 就可以正常工作。
此外,一旦建立连接,sshuttle 就会将 Python 源代码上传到远程计算机,从而消除了您必须在其上安装 Python 的麻烦。
如何安装 sshuttle
安装 sshuttle 非常简单。如果您使用的是 Debian 或 Ubuntu,请使用以下命令从包管理器安装它:
1 | $ sudo apt-get install sshuttle |
如果您使用 Fedora、RHEL 或 CentOS,请使用以下命令。或者,您可以克隆其 git 存储库并运行安装文件。
1 2 3 4 5 | $ sudo dnf install sshuttle or $ git clone https://github.com/sshuttle/sshuttle.git |
使用 sshuttle 设置 VPN
首先,您必须在主机上安装 sshuttle 才能创建 VPN 连接。此外,您还需要远程设备的主机名和 IP 地址。
使用 sshuttle 的方法有多种。
代理所有本地连接
测试 sshuttle 的最佳方法是代理所有本地连接,而不涉及 SSH。执行此操作的命令是:
1 | $ sshuttle -v 0/0 |
测试与远程服务器的连接
可以使用 sshuttle 测试与远程计算机的连接。我们使用“-N”选项让服务器决定路由,使用“-H”选项来自动托管。我们的命令是:
1 | $ sshuttle -vNHr kyle@192.168.88.217 |
IP是我们正在测试的远程机器。
隧道所有流量
您可以使用 sshuttle 将所有流量通过隧道传输到远程 SSH 服务器。请注意,sshuttle 仅将 DNS 请求和 TCP 流量转发到远程服务器。不支持其他协议,例如 UDP。
1 | $ sshuttle --dns -vr kyle@192.168.88.217 0/0 |
0/0 是 DNS 服务器 0.0.0.0 的简写,“kyle” 是远程服务器的用户名,192.168.88.217 是其 IP。此外,连接应表明它是“已连接”,以表明创建的 VPN 正在运行。
排除特定流量
使用 sshuttle 时,“-x ” 选项会排除某些流量。指定要在隧道中排除的 IP 地址。例如,排除“192.168.88。 21”,命令如下所示:
1 | $ sshuttle --dns -vr kyle@192.168.88.217 -x 192.168.88.21 |
隧道特定子网
与排除特定流量类似,您可以选择通过创建的 VPN 路由哪些子网。您可以指定 IP 地址或子网范围。例如,要指定给定的 IP 和子网范围,命令将为:
1 | $ sudo sshuttle -r user@remote_host 192.168.88.2/24 192.168.0.0/16 |
将通过隧道传输的唯一流量是针对指定的 IP 子网、B 类和 C 类。在处理广泛网络中的许多主机时,指定要进行隧道传输的子网效果最佳,因为并非所有连接都需要 VPN。您还可以添加“-dns”选项将 DNS 查询转发到服务器。
结论
购买或使用公开可用的 VPN 来隧道连接存在风险。使用服务器和远程计算机时,您可能需要使用 VPN 路由流量并保证其安全。本指南介绍了如何安装 sshuttle Linux 工具,该工具使您能够通过 SSH 连接创建 VPN。有了 sshuttle,您再也不用担心 VPN 的问题了。它将为您提供使用 Linux 系统时所需的流量保护。