如何从 ssh 运行 x 中的应用程序?

如何从 ssh 运行 x 中的应用程序?

我最近从 Windows 7 切换到 ubuntu 12.10。在 ubuntu 12.10 中,我使用 putty 远程连接到一台 unix 机器,我的几个文件都存储在那里,但我认为通过命令提示符编辑文本文件很繁琐。如何配置 putty 以允许我运行 xterms 并进而运行 emacs 等软件(安装在 unix 机器上)以从我的 ubuntu 机器编辑 unix 机器上的文件?

在 Windows 中需要一个 x 服务器(例如 xMing),是否需要任何其他软件?

答案1

您真的使用 Putty 从 Ubuntu 机器连接到 Ubuntu 服务器吗?这是一个非常不寻常的选择,我甚至不知道 Putty 可以在 Linux 上运行(事实证明它确实可以在 Linux 上运行,甚至在 Ubuntu 存储库中)。

更传统的方法是使用包ssh中的命令openssh-client,它是 OpenSSH 协议客户端的本机实现。使用以下命令安装它:

sudo apt-get install openssh-client

然后你可以使用以下命令连接到远程机器

ssh [email protected]

如果您使用开关启用 X11 转发-X,您将能够在远程机器上运行应用程序并将它们显示在本地机器上:

ssh -X [email protected]

自从你运行适当的真实 X 服务器,您不需要运行 xMing 或类似的东西。

不过,我同意这是一个奇怪问题的解决方案 - 如果您只想编辑文本文件,那么更有效的选择是:

  • 找到适合你的文本模式编辑器。我个人更喜欢 Midnight Commander 的编辑器,你可以用它来运行mc -e myfile.txt

  • 以某种方式挂载远程目录并在本地文本编辑器中编辑文件(使用 sshfs)

  • 在 KDE 中,你可以使用任何程序直接打开远程主机上的文件fish:user@host/path/to/file.txt。我认为 Gnome 也可以做类似的事情

  • 制作文件的本地副本,编辑本地文件并用于rsync上传更改

  • 使用版本控制系统

答案2

您要连接的服务器还必须安装 X 库,因为它们将成为您要运行的任何图形文本编辑器和 xterm 的依赖项。如果已安装,那么您可以使用命令行从 Ubuntu 机器连接到它:

ssh -X username@remotehost 

然后你只需运行你想要的命令即可。要启动图形 emacs 会话:

xemacs filename

答案3

您说得对,您需要在本地运行像 xMing 这样的 X 服务器。

Putty 连接设置允许您在连接时打开 X 转发。如果您启用该功能并运行本地 X 服务器,则通过 SSH 连接运行图形程序应该可以正常工作。请参阅http://www.math.umn.edu/systems_guide/putty_xwin32.html

提前知道它会很慢。在连接设置中打开压缩也会有所帮助。我知道,在熟悉一个好的文本编辑器之前,远程编辑文本文件可能会很乏味 - 如果您计划定期在远程 Linux 服务器上编辑文件,我强烈建议您学习 vi/vim。

如果您确实想要一个图形环境,VNC 是另一个选择。您可以在服务器上安装并运行 vncserver,然后使用 VNC 客户端连接到它。虽然 VNC 仍然有明显的滞后,但它比通过互联网连接转发 X 要好得多。VNC 针对网络使用进行了优化,而 X 则不是。如果您的服务器的防火墙不允许您连接到 VNC 端口(即 5901),那么您可以使用 putty 设置反向 SSH 隧道,将 VNC 端口转发到您可以连接的本地 Windows 机器上的端口。请参阅https://intranet.cs.hku.hk/csintranet/contents/technical/howto/putty-portforward.jsp

相关内容