我需要远程访问我的服务器。我还想拥有 X Forwarding 功能。SSH 为我提供了此功能;但是,它在互联网上有点慢。OpenVPN 的性能会更好吗?或者有其他性能更好的替代方案吗?
答案1
我也想要 x 转发功能。SSH 为我提供了此功能,但它在互联网上有点慢。openvpn 的性能会更好吗?
通过 SSH 进行的任何转发都将受到众所周知的TCP-over-TCP 问题。TCP 协议增加了相当多的开销,因为它是一种事务协议。使用 OpenVPN 默认的 UDP 隧道,可以避免通过 TCP 隧道传输 TCP 时出现的所有问题。
不过,我真的很怀疑它对转发的 X11 会话是否有多大帮助。X11 对延迟和抖动极其敏感。没有隧道协议,即使是最有效的协议,也可以克服延迟或过度饱和的互联网链接。
答案2
SSH 与 OpenVPN 的隧道连接:只要您只需要转发一个 TCP 端口,SSH 就是一个更快的选择,因为它的开销更少。
答案3
由于它是谷歌上最热门的结果之一,我会更新它。即使使用像 wireguard 这样的现代 vpn,它仍然比 ssh 慢
Wireguard speed: 1207 kB/s - 25.445 seconds to complete + high latency over the ping
Ssh tunnel speed: 1468 kB/s - 20.928 seconds to complete + no latency
答案4
您是否尝试过使用 ssh 中的 -C 选项来启用压缩?您还可以在配置文件中设置压缩级别,如 ssh 手册中对“CompressionLevel”的描述。这应该会使用更少的带宽。
我没有使用过 openVPN,所以很遗憾我无法给你一个很好的比较。我认为转发 X 理论上会更快,因为它似乎使用了很多本地 X 会话代码来显示某些窗口,而不是像 VNC 那样绘制整个桌面。但我不确定。
我假设您使用类似的命令并从命令行启动 GUI 程序,例如 /usr/bin/firefox。ssh -C -X [email protected]
如果您想通过 ssh 会话隧道传输 VNC,则可以使用 ssh 端口转发,而无需在防火墙中打开任何其他端口。您只需要在远程主机上安装一个 vnc 服务器。
ssh -C -L 4000:localhost:5900 [email protected]
(假设 vnc 服务器在端口 5900 上服务)
然后在本地机器上打开 vnc 客户端并将其连接到 localhost:4000
我在我的 LAN 上测试了两种 ssh 选项,X-session 转发的表现远远超过我所有的本地 VNC 测试。我能够从一个 x-session 到另一个 x-session 观看 youtube 视频,质量只有一半可看。但是声音仍然在原始系统上播放。