建立 SSH VPN

建立 SSH VPN

因此,通过使用 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:9050socks 代理。以下是针对此任务的一些参考资料:


另一个更接近 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 服务器进行代理。

相关内容