15.6. 连接到服务器

来自 Dirk Janssen <dirkj_AT_u.arizona.edu>:这里有一些在你的笔记本电脑上使用桌面机器的好方法。如果你在工作时有一台单独的桌面机器,你可能想用它作为你的笔记本电脑的终端服务器。这意味着你可以获得更大的屏幕和更好的键盘,而无需担心文件同步。最简单的方法是在两端都安装 ssh,然后从你的桌面(运行 X)ssh 连接到笔记本电脑。Ssh 将提供一个安全连接,以及至关重要的,两个机器之间的安全 X 连接。例如,如果你在 ssh shell 中输入 emacs &,emacs 将在你的桌面机器上启动一个窗口,同时在你的笔记本电脑上运行。

你可以用各种方法使这种情况更高效/更复杂。例如,Emacs 可以通过使用 make-frame-on-display 在不同的显示器上打开窗口(在 emacs 中称为 frame)。这样,你可以让同一个 emacs 在你的桌面和你的笔记本电脑上显示:一个双头系统就诞生了。

对于其他程序,你通常必须在启动时决定要在哪个屏幕上运行它们。要在笔记本电脑屏幕上运行它们,像往常一样启动它们。要在桌面屏幕上运行它们,从桌面上的 ssh shell 启动它们,或者使用 DISPLAY 变量重定向它们的屏幕。一些程序也接受 -display 选项。阅读关于 xauth 的文档,了解如何设置它。一个简单的解决方法是找出 ssh 为你创建了哪个伪显示器,通过在 ssh shell 中输入 echo $DISPLAY。假设你的桌面被称为 olli,你的笔记本电脑被称为 stan,这通常会产生类似 stan:10 的结果。这意味着 stan(笔记本电脑)上的进程显示在它们认为是 stan 的第 10 个屏幕上,而通过一些 ssh 魔法,这实际上被(安全地)中继到 olli 的屏幕上。

有一些方法可以动态地将窗口从一台机器移动到另一台机器。 xmove 采用了一种非常有趣的方法,但是这个程序缺乏一个良好的用户界面(有志愿者吗?)。Xmove 创建一个伪屏幕(类似于 ssh 创建的 stan:10),并且将其 DISPLAY 设置为这个伪屏幕的窗口可以在真实屏幕之间来回移动(前提是所有屏幕都使用相同的颜色深度)。

或者,你可以运行几个打开虚拟根窗口的程序之一:桌面上的一个窗口,其中包含其他窗口。它看起来很像运行模拟器。使用这些程序,你可以在 stan 上启动你的进程,然后将它们的所有窗口移动到 olli,然后工作一段时间,然后再将它们移回,以便你可以继续在 stan 上工作。休眠你的笔记本电脑并无限重复。查看 xmx 和 VNC 以了解更多信息。

如果这一切对你来说太复杂了,但你喜欢同时使用两个屏幕,至少考虑安装 x2x。这个小工具使得可以将鼠标从一个屏幕移动到另一个屏幕成为可能,键盘焦点也随之移动。要运行它,你需要另一个从 stan(笔记本电脑)到 olli(桌面)的 ssh 连接:即在 stan 的 xterm 中输入 ssh olli。保持这个 shell 运行,并使用 echo $DISPLAY 找出创建了哪个伪屏幕。这将返回类似 olli:10 的结果(参见上面的解释)。现在,在 olli 上的任何 shell 中输入:x2x -west -to olli:10(我的意思是,在 olli 上运行并在 olli 上显示的 shell 中,而不是 ssh shell)这会在你桌面屏幕的左侧(west)创建一个小黑条。每当你将鼠标移动到上面时,olli:10 屏幕上的鼠标将会移动。因为 olli:10 只是 ssh 为 stan 的屏幕创建的别名,所以你笔记本电脑上的鼠标将会移动,你只需移动头部,而不是手,就可以在那里打字。

关于 X 安全性的说明:如果你在任何一台计算机上发出 xhost +,玩转各种屏幕程序会容易得多。但这非常不安全。仅在你未连接到任何更大的网络时才这样做。如果你已经让一切正常工作,花一些时间让 xauth 工作。如果你使用 xdm,通常很容易。否则,考虑始终使用相同的 magic cookie 启动你的 Xserver。这不太安全,但仍然相当安全,并且意味着你只需要复制 cookie 一次。检查启动脚本(.xserverrc、.xinitrc、.xsession 等),查找类似 cookie="MIT-MAGIC-COOKIE-1 `keygen`" 的内容,并将其更改为(在此处发明你自己的 cookie):cookie="MIT-MAGIC-COOKIE-1 12345678901234567890abcdefabcdef"