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兩種情況。

服務器端設置

  1. 修改服務器端的ssh設置:

    sudo vim /etc/ssh/sshd_config
    

    找到以下內容,取消注釋,如果找不到的話直接在下面加上這幾行即可:

    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost yes
    
  2. 服務器端修改完成后需要執行命令重啟sshd服務 :

    sudo systemctl restart sshd.service
    

Mac客戶端

  1. 在Mac上使用x11轉發需要下載Xquartz,直接去官網下載dmg文件安裝即可。

  2. 安裝好之后可以直接打開終端,連接遠程服務器。

    注意:與普通的ssh連接不同,要使用x11轉發服務,需要在連接時加上-X參數,即:

    ssh -X song@10.199.160.252
    

    然后我們進入x11-test目錄運行test.py文件,即可看到x11轉發到本地的圖形界面窗口:

在這里插入圖片描述

可以看到,我們要展示的test.jpg圖片成功轉發到了我們的本地窗口。

Linux客戶端

  1. 修改客戶端的ssh設置:

    sudo vim /etc/ssh/ssh_config
    

    添加以下三行:

    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    
  2. 重啟客戶端的ssh服務

    sudo systemctl restart ssh.service
    
  3. 添加-X參數連接服務器

    ssh -X song@10.199.160.252
    

    后面就與Mac端進行類似的測試即可。

Ref:

https://www.cnblogs.com/tsfh/p/9022170.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

操作系統引導詳細過程

操作系統引導詳細過程 轉自:https://blog.csdn.net/lijie45655/article/details/89366372 就直觀而言,我們所見到計算機啟動的過程是:按下電腦開機鍵,系統在黑色的屏幕下打印出一些英文語句、然后進入進度條狀態,最后…

android 自定義透明 等待 dialog,Android自定義Dialog內部透明、外部遮罩效果

Android自定義Dialog內部透明、外部遮罩效果發布時間:2020-09-09 03:01:41來源:腳本之家閱讀:117作者:zst1303939801本文實例為大家分享了Android自定義Dialog遮罩效果的具體代碼,供大家參考,具體內容如下圖…

對比損失的PyTorch實現詳解

對比損失的PyTorch實現詳解 本文以SiT代碼中對比損失的實現為例作介紹。 論文:https://arxiv.org/abs/2104.03602 代碼:https://github.com/Sara-Ahmed/SiT 對比損失簡介 作為一種經典的自監督損失,對比損失就是對一張原圖像做不同的圖像…

android 融云瀏覽大圖,融云 Android sdk kit 頭像昵稱更新機制

先申明筆者的實現方式不是唯一 也不一定是最優化的方案 如果您看到此篇博文 有不同看法 或者 更好的優化 更高的效率 歡迎在評論發表意見 融云官網點我融云頭像機制相關視頻詳解首先跟大家說一下 kit 跟 lib 的頭像機制 kit 是已經包含融云已經給開發者定制好的界面 諸如 會話界…

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one.

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. 報錯信息 報錯信息: RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates tha…

android訪問重定向地址,如何從android中重定向url加載圖像(示例代碼)

嗨,我正面臨這個問題我從RESTCall獲取了一個URL網址是http://hck.re/kWWxUI但是當我在瀏覽器中檢查時,它會重定向到https://s3-ap-southeast-1.amazonaws.com/he-public-data/afreen2ac5a33.jpg如何將此圖像加載到我的imageView中我已經知道如何將畢加索…

Linux中的awk、sed、grep及正則表達式詳解

Linux中的awk、sed、grep及正則表達式詳解 簡介 awk、sed和grep是Linux中文本操作的三大利器。 其中awk適用于取列,sed適用于取行,grep適用于過濾。 正則表達式 首先我們來介紹一下正則表達式,正則表達式(regular expression)描述了一種…

android聚焦時如何給控件加邊框,edittext設置獲得焦點時的邊框顏色

第一步:為了更好的比較,準備兩個一模一樣的EditText(當Activity啟動時,焦點會在第一個EditText上,如果你不希望這樣只需要寫一個高度和寬帶為0的EditText即可避免,這里就不這么做了),代碼如下:a…

gcc參數 -i, -L, -l, -include

gcc參數 -i, -L, -l, -include -i,-L,-l,-include -l和-L -l參數就是用來指定程序要鏈接的庫,-l參數緊接著就是庫名,那么庫名跟真正的庫文件名有什么關系呢?就拿數學庫來說,他的庫名是m&…

xargs 命令教程

xargs 命令教程 轉自:http://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html 作者: 阮一峰 日期: 2019年8月 8日 xargs是 Unix 系統的一個很有用的命令,但是常常被忽視,很多人不了解它的用法。 本文介紹如…

android strictmode有什么作用,Android 性能優化 之 StrictMode

8種機械鍵盤軸體對比本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?StrictMode概述StrictMode 是用來檢測程序中違例情況的開發者工具。使用StrictMode,系統檢測出主線程違例的情況會做出相應的反應,如日志打…

curl 的用法指南

curl 的用法指南 轉自:http://www.ruanyifeng.com/blog/2019/09/curl-reference.html 作者: 阮一峰 日期: 2019年9月 5日 簡介 curl 是常用的命令行工具,用來請求 Web 服務器。它的名字就是客戶端(client&#xf…

怎么在html顯示已登錄狀態,jQuery Ajax 實現在html頁面實時顯示用戶登錄狀態

當網站是全靜態的html頁面時,而又希望網站會員在登錄之后并在所有頁面頭部顯示登錄狀態,如用戶名等,如果未登錄就是未登錄狀態,下面給大家來分享實現的方法。一、在html靜態頁面中加入div,并指定ID如:二、新…

互斥鎖、條件變量、信號量淺析

互斥鎖、條件變量、信號量淺析 互斥鎖與條件變量 條件變量是為了保證同步 條件變量用在多線程多任務同步的,一個線程完成了某一個動作就通過條件變量告訴別的線程,別的線程再進行某些動作(大家都在semtake的時候,就阻塞在哪里&a…

xpwifi熱點設置android,教你在XP電腦中開啟設置WiFi熱點使用的步驟

對于系統中網絡的連接問題是最重要的,那在處理不同的錯誤的情況中,對于無線網絡的設置也就是我們說的WiFi的使用也是會遇到問題的,那在操作的時候對于電腦中是怎么實現設置WiFi熱點的的,對于這個問題今天小編就來跟大家分享一下教…

C/C++ 指針詳解

指針詳解 參考視頻:https://www.bilibili.com/video/BV1bo4y1Z7xf/,感謝Bilibilifengmuzi2003的搬運翻譯及后續勘誤,也感謝已故原作者Harsha Suryanarayana的講解,RIP。 學習完之后,回看找特定的知識點,善…

android雙聯動列表,Android Fragment實現列表和內容聯動

在平板上經常能看到這種的情況:左邊是一個列表,右邊是列表項對應的內容,當點擊某一個列表時,右邊內容區也會隨之改變。下面使用fragment簡單的demo:思路:在mainactivity定義一個回調接口,并在列…

linux /proc 詳解

linux /proc 詳解 本文整理了一下 linux /proc下的幾個常用的目錄和文件,可供查閱,之后在學習工作中有別的用到的話會再補充。 /proc 簡介 Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是&#xff0…

android模擬器太卡,安卓模擬器安裝之后太卡怎么解決

用安卓模擬器玩游戲原理就是在電腦上安裝了一部手機,如果你的電腦配置不是非常高,能不卡頓嗎?遇到卡頓怎么解決?1、安裝最新版本的顯卡驅動。逍遙模擬器對于顯卡的性能要求很高,因此升級至最新版本的顯卡驅動,是確保逍遙模擬器流…

編程環境中Runtime(運行時)的三個含義

編程環境中Runtime(運行時)的三個含義 轉自:https://www.zhihu.com/question/20607178 知乎答主doodlewind 三個含義 實際上編程語境中的 runtime 至少有三個含義,分別是: 指「程序運行的時候」,即程序…