x11转发:通过ssh远程使用GUI程序
x11轉(zhuǎn)發(fā):通過(guò)ssh遠(yuǎn)程使用GUI程序
我們常常使用ssh服務(wù)遠(yuǎn)程操控服務(wù)器,大多數(shù)操作我們都可以通過(guò)命令行命令來(lái)實(shí)現(xiàn)。
ssh遠(yuǎn)程無(wú)法查看GUI程序
現(xiàn)在,筆者在x11-test目錄下放入一張圖片test.jpg,并通過(guò)opnencv-python寫(xiě)一個(gè)簡(jiǎn)單的腳本來(lái)在圖形界面中顯示圖片。
# test.pyimport cv2img = cv2.imread('test.jpg') cv2.imshow('test', img) cv2.waitKey(0)通常,我們?cè)谧约罕镜氐臋C(jī)器上運(yùn)行該腳本時(shí)會(huì)正常顯示一個(gè)窗口,其中是我們的test.jpg圖片。而在遠(yuǎn)程ssh操作服務(wù)器時(shí),我們只能在命令行中執(zhí)行腳本,并得到報(bào)錯(cuò):
(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)根據(jù)報(bào)錯(cuò)信息,可以看到,我們的程序腳本時(shí)沒(méi)有問(wèn)題的,只是由于我們時(shí)遠(yuǎn)程ssh命令行連接,無(wú)法顯示圖片。
x11轉(zhuǎn)發(fā)
這時(shí)我們就需要通過(guò)x11轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)遠(yuǎn)程查看圖形界面。我們分別介紹服務(wù)器端和客戶端的設(shè)置,其中服務(wù)器端默認(rèn)為L(zhǎng)inux,而客戶端則又分為Mac和Linux兩種情況。
服務(wù)器端設(shè)置
修改服務(wù)器端的ssh設(shè)置:
sudo vim /etc/ssh/sshd_config找到以下內(nèi)容,取消注釋,如果找不到的話直接在下面加上這幾行即可:
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes服務(wù)器端修改完成后需要執(zhí)行命令重啟sshd服務(wù) :
sudo systemctl restart sshd.serviceMac客戶端
在Mac上使用x11轉(zhuǎn)發(fā)需要下載Xquartz,直接去官網(wǎng)下載dmg文件安裝即可。
安裝好之后可以直接打開(kāi)終端,連接遠(yuǎn)程服務(wù)器。
注意:與普通的ssh連接不同,要使用x11轉(zhuǎn)發(fā)服務(wù),需要在連接時(shí)加上-X參數(shù),即:
ssh -X song@10.199.160.252然后我們進(jìn)入x11-test目錄運(yùn)行test.py文件,即可看到x11轉(zhuǎn)發(fā)到本地的圖形界面窗口:
可以看到,我們要展示的test.jpg圖片成功轉(zhuǎn)發(fā)到了我們的本地窗口。
Linux客戶端
修改客戶端的ssh設(shè)置:
sudo vim /etc/ssh/ssh_config添加以下三行:
ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes重啟客戶端的ssh服務(wù)
sudo systemctl restart ssh.service添加-X參數(shù)連接服務(wù)器
ssh -X song@10.199.160.252后面就與Mac端進(jìn)行類似的測(cè)試即可。
Ref:
https://www.cnblogs.com/tsfh/p/9022170.html
總結(jié)
以上是生活随笔為你收集整理的x11转发:通过ssh远程使用GUI程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 附近哪有冰激凌粉批发店?
- 下一篇: 图解自监督学习(CV)