因此,通过使用 ssh,您将通过输入如何将该代码转换为像 VPN 一样工作的代码(例如从不同的地理位置搜索谷歌)来连接到服务器ssh User@PrivateIP
。仅供参考:通过连接,我的意思是您连接到您自己的计算机,而不是提供的 VPN 服务器。
答案1
它不完全是 VPN,但在大多数情况下已经足够了。您可以创建带有动态端口转发的 ssh 连接来创建 socks 代理:
ssh -D 9050 user@sshserver -fTNC
-D [bind_address:]port
指定本地“动态”应用程序级端口转发...每当连接到此端口时,连接都会通过安全通道转发,然后使用应用程序协议来确定从远程计算机连接到哪里。目前支持 SOCKS4 和 SOCKS5 协议... 了解更多信息man ssh
。这些选项
-fTNC
将启用压缩并在后台推送连接。可选使用
autossh
代替ssh
。此外,您还可以创建
crontab
如下条目:@reboot autossh -D 9050 user@sshserver -fTNC
你需要做的就是告诉你的应用程序用作localhost:9050
socks 代理。以下是针对此任务的一些参考资料:
对于任何其他特殊要求可能都
iptables
可以应用规则。
另一个更接近 VPN 的解决方案是sshuttle
,它也适用于 ssh。以下是它的概述:
sshuttle
:透明代理与 VPN 和 ssh 的结合据我所知,sshuttle 是唯一可以解决以下常见情况的程序:
- 您的客户端机器(或路由器)是 Linux、FreeBSD 或 MacOS。
- 您可以通过 ssh 访问远程网络。
- 您不一定拥有远程网络的管理员访问权限。
- 远程网络没有 VPN,或者只有愚蠢/复杂的 VPN 协议(IPsec、PPTP 等)。或者,也许您是管理员,只是对 VPN 工具的糟糕状态感到沮丧。
- 您不想为远程网络上的每个主机/端口创建一个 ssh 端口转发。
- 您讨厌 openssh 的端口转发,因为它随机地很慢和/或很愚蠢。
- 您不能使用 openssh 的 PermitTunnel 功能,因为该功能在 openssh 服务器上默认是禁用的;而且它采用 TCP-over-TCP 连接,性能很差(见下文)。
它在 Ubuntu 存储库中可用,因此您可以通过以下命令安装它并开始检查:
sudo apt install sshuttle
也可以以非 root 用户身份安装到虚拟环境中。安装完成后,您可以使用:
sshuttle --dns -r user@sshserver 0.0.0.0/0
此命令将转发所有流量,包括 DNS 查询,并将通过您所连接的服务器的 DNS 服务器进行代理。