Ssh

SSH X11 不工作

  • January 30, 2022

我有一台家用和工作電腦,家用電腦有一個靜態 IP 地址。

如果我從我的工作電腦 ssh 到我的家庭電腦,ssh 連接工作但不顯示 X11 應用程序。

在我/etc/ssh/sshd_config家:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

在工作中,我嘗試了以下命令:

xhost + home HOME_IP
ssh -X home
ssh -X HOME_IP
ssh -Y home
ssh -Y HOME_IP

/etc/ssh/ssh_config的工作:

Host *
ForwardX11 yes 
ForwardX11Trusted yes

~/.ssh/config的工作:

Host home
HostName HOME_IP
User azat
PreferredAuthentications password
ForwardX11 yes

~/.Xauthority的工作:

-rw------- 1 azat azat 269 Jun  7 11:25 .Xauthority

~/.Xauthority在家裡:

-rw------- 1 azat azat 246 Jun  7 19:03 .Xauthority

但它不起作用

在我與家建立 ssh 連接後:

$ echo $DISPLAY
localhost:10.0

$ kate
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
kate: cannot connect to X server localhost:10.0

iptables在家裡使用,但我允許埠 22。根據我所讀到的,這就是我所需要的。

UPD。-vvv

...
debug2:回調開始
debug2: x11_get_proto: /usr/bin/xauth list :0 2​​>/dev/null
debug1:請求帶有身份驗證欺騙的 X11 轉發。
debug2:通道 1:請求 x11-req 確認 1
調試2:client_session2_setup:id 1
debug2: fd 3 設置 TCP_NODELAY
debug2:通道 1:請求 pty-req 確認 1
...

嘗試啟動時kate

調試1:client_input_channel_open:ctype x11 rchan 2 win 65536 max 16384
debug1:client_request_x11:來自 127.0.0.1 55486 的請求
debug2:fd 8 設置 O_NONBLOCK
debug3:fd 8 是 O_NONBLOCK
調試 1:通道 2:新 [x11]
debug1:確認 x11
debug2:X11 連接使用不同的認證協議。
由於身份驗證錯誤,X11 連接被拒絕。
debug2: X11 拒絕 2 i0/o0
debug2:通道 2:讀取失敗
debug2:通道 2:close_read
debug2:通道 2:輸入打開 -> 漏極
debug2:通道 2:ibuf 為空
debug2:通道 2:發送 eof
debug2:通道 2:輸入漏極 -> 關閉
debug2:通道 2:寫入失敗
debug2:通道 2:close_write
debug2:通道 2:輸出打開 -> 關閉
debug2: X11 關閉 2 i3/o3
debug2:通道 2:發送關閉
debug2:通道 2:rcvd 關閉
debug2:通道 2:已死
debug2:通道 2:垃圾收集
debug1:通道 2:免費:x11,nchannels 3
debug3:通道 2:狀態:以下連接已打開:
#1 客戶端會話(t4 r0 i0/0 o0/0 fd 5/6 cc -1)
#2 x11 (t7 r2 i3/0 o3/0 fd 8/8 cc -1)

# 同上重複約7次

凱特:無法連接到 X 伺服器 localhost:10.0

UPD2 請提供您的 Linux 發行版和版本號。

您是在為 X 使用預設的 GNOME 或 KDE 環境還是您自己定制的其他環境?

azat: ~ $ kded4 -version
數量:4.7.4
KDE 開發平台:4.6.5 (4.6.5)
KDE 守護程序:$ Id $

您是從終端視窗直接在命令行上呼叫 ssh 嗎?

你用的是什麼終端?xterm、gnome 終端,還是?

你是如何啟動終端在 X 環境中執行的?從菜單?熱鍵?或者 ?

從終端模擬器`yakuake`
手動按“Ctrl + N”並編寫命令

您可以從 ssh -X 失敗的同一個終端視窗執行 xeyes 嗎?

`xeyes` - 未安裝
但是 `kate` 或其他 kde 應用程序正在執行

您是否以登錄 X 會話的同一使用者身份呼叫 ssh 命令?

From the same user

UPD3

我也下載ssh原始碼,並使用debug2()write why it’s report that version is different

它看到一些 cookie,其中一個是空的,另一個是MIT-MAGIC-COOKIE-1

ssh X 轉發不起作用的原因是因為我有一個/etc/ssh/sshrc配置文件。

手冊頁的末尾sshd(8)指出:

如果~/.ssh/rc存在,執行它;如果/etc/ssh/sshrc存在,則執行它;否則執行 xauth

因此,我將以下命令添加到/etc/ssh/sshrc伺服器端(也來自 sshd 手冊頁):

if read proto cookie && [ -n "$DISPLAY" ]; then
       if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
               # X11UseLocalhost=yes
               echo add unix:`echo $DISPLAY |
                   cut -c11-` $proto $cookie
       else
               # X11UseLocalhost=no
               echo add $DISPLAY $proto $cookie
       fi | xauth -q -
fi

它有效!

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