x11转发:通过ssh远程使用GUI程序
x11轉發:通過ssh遠程使用GUI程序
我們常常使用ssh服務遠程操控服務器,大多數操作我們都可以通過命令行命令來實現。
ssh遠程無法查看GUI程序
現在,筆者在x11-test目錄下放入一張圖片test.jpg,并通過opnencv-python寫一個簡單的腳本來在圖形界面中顯示圖片。
# test.pyimport cv2img = cv2.imread('test.jpg') cv2.imshow('test', img) cv2.waitKey(0)通常,我們在自己本地的機器上運行該腳本時會正常顯示一個窗口,其中是我們的test.jpg圖片。而在遠程ssh操作服務器時,我們只能在命令行中執行腳本,并得到報錯:
(JJ_env) song@dhu424:~/JJ_Projects/dsmAVA/x11-test$ python test.py qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/song/anaconda3/envs/JJ_env/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc.Aborted (core dumped)根據報錯信息,可以看到,我們的程序腳本時沒有問題的,只是由于我們時遠程ssh命令行連接,無法顯示圖片。
x11轉發
這時我們就需要通過x11轉發來實現遠程查看圖形界面。我們分別介紹服務器端和客戶端的設置,其中服務器端默認為Linux,而客戶端則又分為Mac和Linux兩種情況。
服務器端設置
修改服務器端的ssh設置:
sudo vim /etc/ssh/sshd_config找到以下內容,取消注釋,如果找不到的話直接在下面加上這幾行即可:
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes服務器端修改完成后需要執行命令重啟sshd服務 :
sudo systemctl restart sshd.serviceMac客戶端
在Mac上使用x11轉發需要下載Xquartz,直接去官網下載dmg文件安裝即可。
安裝好之后可以直接打開終端,連接遠程服務器。
注意:與普通的ssh連接不同,要使用x11轉發服務,需要在連接時加上-X參數,即:
ssh -X song@10.199.160.252然后我們進入x11-test目錄運行test.py文件,即可看到x11轉發到本地的圖形界面窗口:
可以看到,我們要展示的test.jpg圖片成功轉發到了我們的本地窗口。
Linux客戶端
修改客戶端的ssh設置:
sudo vim /etc/ssh/ssh_config添加以下三行:
ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes重啟客戶端的ssh服務
sudo systemctl restart ssh.service添加-X參數連接服務器
ssh -X song@10.199.160.252后面就與Mac端進行類似的測試即可。
Ref:
https://www.cnblogs.com/tsfh/p/9022170.html
總結
以上是生活随笔為你收集整理的x11转发:通过ssh远程使用GUI程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 附近哪有冰激凌粉批发店?
- 下一篇: Linux环境变量详解