如何通过 SSH 远程运行桌面/GUI 应用程序?

如何通过 SSH 远程运行桌面/GUI 应用程序?

我有一台 Ubuntu 桌面电脑。如果我打开终端并输入:

chromium-browser

我可以启动 Chromium 或者例如可以执行这个 pythons 脚本

import pyautogui, sys
im2 = pyautogui.screenshot('/var/www/my_screenshot.png')

所以如果我输入

python /var/www/python/m1.py

它会截取屏幕截图。

但是,如果我通过 SSH 连接到这台机器并尝试执行相同的命令(无论作为普通用户还是 root 用户),这些命令都不起作用。因此我无法远程运行 Chromium(Putty 中没有错误,但浏览器无法运行),也无法远程截屏,我看到以下错误:

Traceback (most recent call last):
  File "/var/www/python/m1.py", line 1, in <module>
    import pyautogui, sys
  File "/usr/local/lib/python3.5/dist-packages/pyautogui/__init__.py", line 94, in <module>
    import mouseinfo
  File "/usr/local/lib/python3.5/dist-packages/mouseinfo/__init__.py", line 149, in <module>
    _display = Display(os.environ['DISPLAY'])
  File "/usr/lib/python3.5/os.py", line 725, in __getitem__
    raise KeyError(key) from None
KeyError: 'DISPLAY'

那么如何通过 SSH 运行应用程序/脚本,以便它们的工作方式就像我从机器的终端运行它们一样?

答案1

通过添加以下标志,您可以在通过 ssh 连接到另一台计算机时在本地桌面上运行 GUI 应用程序:

ssh -o ForwardX11=yes -o ForwardAgent=yes -o ForwardX11Trusted=yes username@ip

forward 只是告诉虚拟机将其显示输出转发到本地显示器。

答案2

试试这个: 您要连接的机器在ssh REMOTE_IP "DISPLAY=:0 nohup chromium-browser"哪里。REMOTE_IP

相关内容