我该如何通过SSH运行一个图形用户界面应用程序?

我习惯于在Unix/Linux上工作,最近转移到Mac。过去我可以做到这一点:

derick@linux1:~$ ssh -X linux2
derick@linux2's password:
derick@linux2:~$ xclock
我已经从maxports安装了X11,并且我也可以从我的Mac上进行相同的操作。如果我尝试通过SSH从Linux进入我的Mac,我只能运行某些应用程序: - `/usr/X11/bin/xclock` 运行正常 - 类似于 `/Applications/Preview.app/Contents/MacOS/Preview` 的应用程序会在Mac上打开GUI界面。 看起来在Mac上不可能做到这一点?如果不行,那么我如何在本地(Linux)显示器上远程运行Mac上的应用程序?我需要使用第三方应用程序吗? 更新: 更准确地说:我有Synergy并且在Mac上进行编码。在我的Linux PC上,我想要看到Mac上另一个应用程序的显示(GUI)。因此,“实时屏幕共享”应用程序如VNC将无法工作。 例如,我正在Mac上使用应用程序A(比如Word),并希望在我旁边的Linux PC上看到Excel的输出(在Mac上运行)。通过网络模拟双屏幕。在Linux上很好用,希望能找到Mac上的解决方案。

如果没有通过SSH的解决方案,我也会对其他解决方法感兴趣。问题是,我想通过网络将本地应用程序的显示在我旁边的计算机上运行,就像我以前在Linux上做的那样。 - Derick Schoonbee
我可以问一下你为什么想要避免使用VNC吗?是因为网络延迟的问题吗? - Nicholas Smith
我目前正在使用Mac工作,因此屏幕被“占用”了。我想在Mac上运行另一个应用程序,并将输出显示在我旁边的PC上。就像我在Linux上做的那样。希望能在Mac上找到一个解决方案。 - Derick Schoonbee
顺便说一下,你不需要通过macports安装X11... X11已经随OS X一起安装了。 - Yuji
啊哈,所以你对VNC的反对并不是因为VNC本身的问题,而是因为屏幕限制的原因? - Nicholas Smith
相当相关:http://apple.stackexchange.com/questions/100829/how-to-launch-a-gui-application-in-another-users-graphical-session/102105#102105 - cregox
5个回答

Mac OS X原生应用程序不使用X协议进行渲染,而是使用Mac特定的协议。因此,您无法像在Linux工作站上那样使用ssh X协议转发。 正如您发现的那样,反过来却是可以的,您可以在Mac OS X上安装一个X服务器,并将Linux程序显示在您的Mac上。 您可以使用Mac自己的桌面共享功能或安装VNC服务器来实现这一点。然后,在Linux系统上,您通过VNC连接到Mac,而不是通过ssh连接。

谢谢提供信息。我想知道是否有类似的功能可以在Mac上使用。例如,当我在Mac上工作/登录时,我能否使用来自linux1的桌面共享功能? - Derick Schoonbee
是的,你可以在Linux上运行VNC服务器,并使用Mac上的VNC客户端连接它(Mac上有一些免费的VNC客户端,Linux上也有免费的VNC服务器)。 - Sylvain Defresne
嗯... VNC不太合适:我正在我的Mac上使用应用程序A(比如Word),想要在旁边的Linux电脑上看到运行在Mac上的Excel的输出。 - Derick Schoonbee
正如Sylvain所解释的,Mac上不可能实现这一点。操作系统的底层架构不允许这种类型的使用。 - Samuel Mikel Bowles
3看我的回答,但是如果你在Mac上使用不同的用户进行VNC会话,那么使用Lion是可能的。 - cftarnas
@Derick - 如果我理解你的要求正确的话,你可以很容易地使用苹果的X11.app在你的Mac上使用远程Linux应用程序。它不会默认安装,但你可以从你的OS X DVD上选择性地安装它。 - Kiezpro
谢谢Kiezpro。到目前为止,@cftarnas提供了最好/最准确的解决方案。 - Derick Schoonbee

所以,如果我没弄错的话,你目前对VNC的问题是它正在与当前Mac用户共享屏幕,并显示你不想在其他计算机上看到的应用程序?Lion引入了一项功能,可以与后台登录的用户共享屏幕。引用链接中的文本如下:

  • 启用屏幕共享并设置VNC密码。
  • 记下你的计算机的IP地址。
  • 在另一台机器上启动VNC客户端。
  • 使用之前设置的密码连接到你的计算机的IP地址。
  • 你将看到Mac OS X登录屏幕,这是在你首次启动计算机时出现的。如果你登录当前活动用户,你将控制计算机的屏幕。如果你选择其他用户,你将登录到该用户的后台桌面。这不会影响物理计算机屏幕上显示的内容。

你可能只需要创建另一个用于共享的用户。


太好了,这似乎是我想要的!现在我有另一个升级到Lion的动力。我很快就会测试并可能接受这个答案。谢谢! - Derick Schoonbee
讨厌,我刚刚升级了,通过VNC得到登录屏幕。但它不接受我的键盘输入。因此,我无法登录 :( - Derick Schoonbee
这很奇怪 - 你在用什么VNC客户端? - cftarnas

正如Sylvian所提到的,你不能在Linux上运行Mac应用程序并显示它们。你能做的最好的办法是使用VNC。你将看到整个屏幕,而不仅仅是一个应用程序。 在屏幕共享首选项中启用VNC密码:

Screen Sharing Preferences

你可以在Linux上使用任何VNC客户端应用程序。

你有点倒霉,但ScreenRecycler会尽可能地帮助你。它通过VNC运行,但让OS X相信VNC连接实际上是一个独立的显示器,这应该能让你接近你所需的效果。我用过它,效果还不错,有免费试用版,然后价格也很便宜。我停止使用它纯粹是因为网络太差,除非我直接将两台设备进行网络连接,否则延迟太大。

有点创意,但你也可以使用VNC运行一个Java应用程序,它要么有一个HTTP服务器,要么像我这样使用循环来查找文件并通过SSH创建该文件。 这是我的Java应用程序:这里