我的本機是 linux mint,遠端機器是 centos 7。
當我以互動模式連接到主機時
$ 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有問題。
請幫忙。
謝謝。
答案1
原因是它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'
答案2
配置:
- CentOS Linux 版本 7.6.1810(核心)
/etc/ssh/sshd_config
包含:
X11Forwarding yes
以下命令對我有用:
ssh -Y HOST bash -l -c gnome-terminal --display=${DISPLAY} < /dev/null > /dev/null 2>&1 &
通知gnome-terminal --disable-factory
我--disable-factory
不再受支援。