我有一台 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