我正在尝试通过 openssh 设置 vpn。
我在 Arch Linux 上运行客户端。客户端的版本是OpenSSH_7.7p1, OpenSSL 1.1.0h 27 Mar 2018
.
ssh 服务器位于 Google Cloud 上的 Ubuntu 17.10 版本上OpenSSH_7.5p1 Ubuntu-10ubuntu0.1, OpenSSL 1.0.2g 1 Mar 2016
。在服务器配置中,我启用了各种转发以及PermitTunnel
选项。我已经重新启动了 sshd 守护进程。apparmor
为了以防万一,我也禁用了。没有 selinux 正在运行。我也这样做modprobe tun
以防万一(尽管例如 openvpn 可以正常工作)。该服务器在 Google Cloud 和 Ubuntu 级别上都启用了 ip 转发。ufw
已禁用,Google 防火墙已完全打开。
首先,我尝试使用此命令进行连接:
sudo ssh -i ssh_key -w any:any root@ip -vvv -o Tunnel=point-to-point
以上失败,并且在故障点附近来自 ssh 的调试输出是:
debug1: Authentication succeeded (publickey).
Authenticated to xxxxxxxx.
debug1: Requesting tun unit 1 in mode 1
debug1: sys_tun_open: tun1 mode 1 fd 4
Tunnel device open failed.
Could not request tunnel forwarding.
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
由于上述失败,我认为我应该先创建 tun 设备。这就是我所做的:
在客户端:
sudo ip tuntap add tun1 mode tun
sudo ip link set tun1 up
sudo ip addr add 172.32.0.1/24 peer 172.32.0.2 dev tun1
在服务器上:
sudo ip tuntap add tun1 mode tun
sudo ip link set tun1 up
sudo ip addr add 172.32.0.2/24 peer 172.32.0.1 dev tun1
但这又以同样的方式再次失败。
我尝试在本地机器上运行 sshd 服务器并连接到 localhost。但后来它又以同样的方式失败了。
我尝试了本地端口转发,它起作用了。
如何使用 openssh 正确设置 vpn?我彻底搜索了网络,但没有任何帮助。
我的 Arch Linux 也有同样的问题。ArchLinux 安装在客户端和服务器上。openssh 的版本是
7.7p1-1
. 作为临时解决方案,我安装了 openssh 版本7.6p1-2
OpenSSH_7.7p1 Debian-2,OpenSSL 1.0.2o 2018 年 3 月 27 日也有同样的问题。
使用此脚本降级 ssh 后:
VPN 再次开始工作。