問(wèn)題: 當(dāng)我嘗試使用SSH的X11轉(zhuǎn)發(fā)選項(xiàng)連接到遠(yuǎn)程主機(jī)時(shí), 我在登錄時(shí)遇到了一個(gè) "X11 forwarding request failed on channel 0" (X11 轉(zhuǎn)發(fā)請(qǐng)求在通道0上失?。┑腻e(cuò)誤。 我為什么會(huì)遇到這個(gè)錯(cuò)誤,并且該如何修復(fù)它?
首先,我們假設(shè)你已經(jīng)正確啟用了SSH的X11轉(zhuǎn)發(fā)。
如果你在登錄時(shí)遇到"X11 forwarding request failed on channel 0" (X11 轉(zhuǎn)發(fā)請(qǐng)求在通道0上失?。?,這里可能有不同的原因,解決的方法也不同。
方案一
出于安全原因,OpenSSH服務(wù)默認(rèn)將X11轉(zhuǎn)發(fā)請(qǐng)求綁定到本地回環(huán)地址上,并且在DISPLAY環(huán)境變量中將主機(jī)名設(shè)置為“localhost”。在這樣的設(shè)定下,一些 X11客戶(hù)端不能正確處理X11轉(zhuǎn)發(fā),這會(huì)導(dǎo)致報(bào)告中的錯(cuò)誤。要解決這個(gè)問(wèn)題,在/etc/ssh/sshd配置文件中加入下面這幾行,它可以將X11轉(zhuǎn)發(fā)請(qǐng)求綁定到外網(wǎng)卡地址上。
$ sudo vi /etc/ssh/sshd_config
X11Forwarding yesX11UseLocalhost no
重啟SSH使設(shè)置生效:
$ sudo /etc/init.d/ssh restart (Debian 6, Ubuntu or Linux Mint)
$ sudo systemctl restart ssh.service (Debian 7, CentOS/RHEL 7, Fedora)
$ sudo service sshd restart (CentOS/RHEL 6)
方案二
如果遠(yuǎn)程主機(jī)的SSH服務(wù)禁止了IPv6,那么X11轉(zhuǎn)發(fā)失敗的錯(cuò)誤也有可能發(fā)生。要解決這個(gè)情況下的錯(cuò)誤。打開(kāi)/etc/ssh/sshd配置文件,取消對(duì)"AddressFamily all" (如果有這條的話(huà))的注釋。接著加入下面這行。這會(huì)強(qiáng)制SSH服務(wù)只使用IPv4而不是IPv6。(LCTT 譯注:此處恐有誤,AddressFamily 沒(méi)有 all 這個(gè)參數(shù),而 any 代表同時(shí)支持 IPv6和 IPv4,以此處的場(chǎng)景而言,應(yīng)該是關(guān)閉IPv6支持,只支持 IPv4,所以此處應(yīng)該是“注釋掉 AddressFamily any”才對(duì)。)
$ sudo vi /etc/ssh/sshd_config
AddressFamily inet
再說(shuō)一次,重啟SSH服務(wù)來(lái)完成設(shè)置,謝謝閱讀,希望能幫到大家,請(qǐng)繼續(xù)關(guān)注腳本之家,我們會(huì)努力分享更多優(yōu)秀的文章。