当您通过 SSH 运行 X 应用程序时,SSH 协议的加密/解密开销可能会减慢远程运行的 X 应用程序的渲染速度。此外,如果通过广域网建立 SSH 会话,由于网络延迟和吞吐量限制,通过 SSH 的 X11 转发可能会变得更慢。
在本教程中,我将介绍一些关于如何通过广域网在 SSH 中加速 X11 转发的技巧。
有两种方法可以通过 SSH 提高 X11 转发的性能。
方法一
首先,您可以使用 OpenSSH 客户端的_压缩选项_。使用 -C
选项,OpenSSH 客户端将压缩通过 SSH 交换的所有数据,包括 stdin
、stdout
、stderr
和转发的 X11 会话。
您还可以考虑在 SSH 中使用计算量较小的密码,以便在加密/解密过程中花费更少的时间。众所周知,OpenSSH 使用的默认 AES 密码速度很慢。
一项独立研究表明,arcfour
和 blowfish
密码比 AES
更快,如下所示。根据 SSH 手册页,blowfish
是一种快速分组密码,而且非常安全。同时,arcfour
流密码比常见的分组密码更容易受到攻击。因此使用arcfour
时要小心。
要使用上述技巧加速 X11 转发,您可以按如下方式通过 SSH 连接到远程主机。
$ ssh -XC -c blowfish-cbc,arcfour [email _host.com
方法二
或者,您可以在 SSH 配置文件中指定这些选项。
要编辑系统范围的 SSH 配置文件:
$ sudo vi /etc/ssh/ssh_config
要编辑每用户 SSH 配置文件:
$ vi ~/.ssh/config
在任一 SSH 配置文件中,添加以下内容:
Host remote_host.com Compression yes ForwardX11 yes Ciphers blowfish-cbc,arcfour
然后您可以通过 SSH 连接到远程主机,而无需使用任何命令行选项:
$ ssh [email _host.com
请注意,在 SSH 中切换到不同的密码有一些注意事项。首先,特定密码的性能可能因不同的处理器架构而异。例如,最近几代 Intel 处理器(例如 Intel i5、i7、Xeon)配备了对 AES 的硬件支持(例如 AES-NI),在这种情况下(硬件加速)AES 将比其他处理器快得多。
其次,如果建立X11转发的网络非常慢,那么X11转发的瓶颈实际上是网络,而不是CPU。在这种情况下,无论您使用哪种密码,X11转发的性能都不会受到影响。