使用 SSH 和 Tmux 进行屏幕共享
在我关于屏幕共享的文章中,我演示了如何使用 VNC 查看和控制远程桌面。有时,完整的远程桌面查看器并不总是实用的。但如果您需要控制或查看其他人的屏幕上的内容,您仍然可以选择其他选项。
OpenSSH
OpenSSH 并非真正用于共享屏幕,但它可以执行一些类似的任务。例如,如果您支持的用户需要 GUI 应用程序的支持,您可以使用带有 X-forwarding 的 SSH 连接来启动该应用程序的实例、修改其设置或测试他们声称无法正常工作的某些功能。
不同之处在于您实际上并没有共享屏幕。VNC 连接到桌面会话,但 SSH 只生成一个应用程序:shell。从这个 shell,您可以执行您连接到的系统可用的任何命令,甚至可以启动 GUI 应用程序。
要通过 SSH 连接到远程计算机,您必须确保远程计算机:可通过防火墙访问,并且接受 SSH 连接。如果这两个先决条件中的任何一个不满足,则无法打开远程 shell。需要了解有关 Linux 中防火墙的更多信息?请考虑对 防火墙-cmd的介绍。
要允许传入的 SSH 连接请求,远程计算机(您要访问的计算机)必须运行 SSH 服务器。大多数 Linux 和 MacOS 计算机已经运行了 SSH 服务器,但它们可能默认处于非活动状态,因此您必须让用户激活它。在 GNOME 桌面中,远程登录在“设置”应用程序的“共享”类别中激活:
一旦激活,您就可以登录。通常,您可以使用-X选项将远程计算机的 X11 图形显示转发到本地计算机,但 OpenSSH 应用程序对此类连接设置了额外的安全限制,以防万一。只要您在受信任的计算机上启动 shell,就可以使用-Y选项选择退出额外的安全性:
$ ssh -Y 93.184.216.34
现在,您可以启动远程计算机的任意一个应用程序实例,但让它出现在您的屏幕上。例如,尝试启动 Nautilus 文件管理器:
remote$ nautilus &
结果是屏幕上出现一个 Nautilus 文件管理器窗口,显示远程计算机上的文件。您的用户看不到您所看到的窗口,但至少您可以通过图形方式访问他们正在使用的内容。通过这种方式,您可以调试、修改设置或执行通过普通的基于文本的 SSH 会话无法执行的操作。
但请记住,转发的 X11 会话不会将整个远程会话带给您。例如,您无法访问目标计算机的音频播放,但您可以让远程系统通过其扬声器播放音频。您也无法访问目标计算机上的任何自定义应用程序主题,等等(至少,如果没有一些巧妙的环境变量重定向,则无法访问)。
但是,如果您只需要查看文件或使用您无法在本地访问的应用程序,则转发 X 会非常有用。
多路复用
Tmux是一个屏幕多路复用器,这意味着它为您的终端提供虚拟终端,允许您从一个虚拟会话切换到另一个虚拟会话。现代终端仿真器具有选项卡式 UI,使得使用 Tmux 显得多余,但 Tmux 有一些独特的功能,如果没有它,仍然很难与之匹敌。
首先,您可以在远程计算机上启动 Tmux,启动一个进程,从 Tmux 分离,然后注销。在普通终端中,注销将结束您启动的进程。由于这些进程是在 Tmux 中启动的,因此即使您离开后它们仍会继续存在。
其次,Tmux 可以在多个屏幕上“镜像”其会话。如果两个用户登录同一个 Tmux 会话,那么他们都会在自己的屏幕上实时看到相同的输出。
Tmux 是一种轻量、简单且有效的解决方案,适用于您远程培训某人、调试不起作用的命令、查看文本、监控服务或流程,或者只是避免有时花费十分钟通过电话清楚地大声读出命令以便用户能够准确地输入它们的情况。
要尝试此选项,您必须有两台计算机。假设一台计算机属于 Alice,另一台属于 Bob。Alice 远程登录 Bob 的 PC 并启动 Tmux 会话:
alice$ ssh bob.local
alice$ tmux
在他的 PC 上,Bob 启动了 Tmux,并连接到同一个会话:
bob$ tmux attach
当 Alice 打字时,Bob 会看到她正在打字的内容,而当 Bob 打字时,Alice 会看到他正在打字的内容。
这是一个简单但有效的技巧,可以实现计算机用户之间的交互式实时会话,但它完全基于文本。
合作
借助这两个应用程序,您可以使用一些强大的方法来支持用户。您可以使用这些工具远程管理系统、作为培训工具或支持工具,而且在每种情况下,它肯定比在办公室里四处寻找某人的办公桌要好。熟悉 SSH 和 Tmux,并立即开始使用它们。