Ssh

如何在遠端 centos 7 機器上執行 gnome-terminal?

  • June 18, 2019

我的本地機器是 linux mint,遠端機器是 centos 7。我嘗試使用 x-forwarding 在遠端機器上打開 gnome-terminal,但它不工作。

當我以互動模式連接到主機時

$ ssh -Y centos-host

然後在打開的會話中我可以執行 gnome-terminal 和 x-forwarding 工作

$ gnome-terminal 
$ netstat -nltp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -  

但是,當我嘗試執行時

$ ssh -Y centos-host gnome-terminal

帶有 gnome 終端的視窗打開,但沒有為 X 創建隧道。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

我有另一台 linux mint 遠端機器,並沒有遇到這樣的問題。所以,我認為centos 7有問題。

請幫忙。

謝謝你。

原因是它把gnome-terminal自己分叉到後台。如果您在互動式ssh會話中執行它,您會注意到即使終端仍處於打開狀態,您也會收到一個新的命令提示符。在非互動的情況下,一旦發生這種情況,ssh就會認為命令已經終止並關閉會話,包括關閉伺服器上正在監聽的 X11 套接字。由於仍有活動的 X11 連接,ssh因此不會立即退出,這就是為什麼看起來會話仍然處於活動狀態,但是無法打開新的 X11 連接。

您曾經可以通過使用來做到這一點,但不幸的是,這已在某些時候gnome-terminal --disable-factory被刪除。gnome-terminal你現在有兩個選擇:

  • 使用另一個不分叉到後台的終端程序,例如xterm
  • 直接在啟動後gnome-terminal,在同一個ssh會話中執行一個不會終止的命令,例如ssh -Y server 'gnome-terminal; echo Press enter to exit; read'

引用自:https://serverfault.com/questions/827259