2017年9月27日 星期三

ssh X forwarding 失敗除錯

從甲電腦用 ssh 連線到乙電腦時, 如果多加一個 -X 選項, 像這樣: ssh -X me@乙電腦 之後就可以在乙電腦上執行 GUI 程式, 視窗會丟回甲電腦來。 這叫做 ssh X forwarding, 很好用。 不太確定是什麼原因, 最近我的筆電當成乙電腦 (ssh server) 時, 這個功能突然失效了。 這篇短文 拯救了我: 連線時改下 ssh -v -X me@乙電腦, 這個 -v 會叫 ssh 多印一些除錯訊息。 再根據錯誤訊息 ("X11 forwarding request failed on channel 0") 找到 文章, 說在乙電腦的 /etc/ssh/sshd_config 裡面加一句 X11UseLocalhost no, 再重新啟動服務: systemctl restart ssh, 於是 ssh -X 就又可以用了! 這句話是什麼意思? 根據手冊 man sshd_config 這個問答, 看來是叫乙電腦的 sshd 服務放寬一點, 不要太嚴格。 也請參考 這個問答

順便一提, 在乙電腦上 sudo 變身成 root 之後, 也有可能就無法再開啟 GUI 視窗。 [這就是 unix 的文化。 在預設的情況下, 即使是 root 也不能任意侵犯一般用戶的視窗啊!] 有搜尋到 123 等等文章; 不過其實我自己已經很久沒遇過到這個問題了。 回頭一查, 發現很久以前就已經在 root 的 .bashrc 裡面設定 export XAUTHORITY=/home/ckhung/.Xauthority 所以一直都很順暢。 註解裡寫著這招是從 archlinux 的文件 學來的。 真是太愛 archlinux 社群了! 連我們非 archlinux 用戶都經常受惠於他們超優質的文件。

1 則留言:

  1. 這招好用!
    但我在 cygwin 開 x server ,
    如果遠端跑 firefox 或 emacs 會很慢,
    不知道是網路慢還是 cygwin 慢。
    網路測速是 10MB/s

    回覆刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。