2011-11-16 77 views
13

我一直在試圖從我的筆記本電腦獲得X11端口轉發工作。我無法弄清楚爲什麼它不起作用。ssh X11轉發將不起作用

我得到這個消息時,我嘗試運行的xterm:

X11 connection rejected because of wrong authentication. 
xterm Xt error: Can't open display: localhost:10.0 

我不知道這是相關或不相關,但是當我登錄,我得到這個消息:

/usr/bin/xauth: timeout in locking authority file /home/sphillips/.Xauthority 

我想知道如果問題是我的筆記本電腦上的本地用戶是skp,並且此服務器上的用戶名是sphillips。我已經能夠讓X11轉發與我的其他使用相同skp登錄的計算機一起工作。

此外,X11端口轉發使用Xming的和膩子到同一臺服務器在Windows機器的工作原理。我必須手動配置DISPLAY變量到IP地址並顯示0.0,但它可以工作。

我在我的機器上運行了一個xhost +,試圖繞過任何安全問題。這仍然沒有奏效。

在服務器上,我檢查配置:

$ sudo grep X11Forwarding /etc/ssh/sshd_config 
#X11Forwarding no 
X11Forwarding yes 
# X11Forwarding no 

而且我的機器上還有:

$ sudo grep X11Forwarding /etc/ssh/sshd_config 
[sudo] password for skp: 
#X11Forwarding no 
X11Forwarding yes 
# X11Forwarding no 

我的服務器是紅帽企業Linux 6和我的筆記本電腦是的Fedora 15

任何人都可以給我任何想法嘗試從我的筆記本電腦獲得SSH X11轉發工作嗎?

+0

我得到了這個風滾草徽章!這是一件壞事還是一件好事?我只希望有人對我還能嘗試什麼有一些想法。 – digitaleagle

回答

2

我得到了同樣的問題在Debian的OpenVZ的容器中,這個問題似乎來自我的/ etc/hosts文件,其中「本地主機」受到影響的LAN IP,而不是127.0.0.1。

前:

192.168.0.15 dagi dagi.domain.net localhost localhost.localdomain 

後:

192.168.0.15 dagi dagi.domain.net 
127.0.0.1  localhost localhost.localdomain 

此後將ssh -Xssh -Y工作就像一個魅力,甚至沒有重新啓動sshd的。

+0

謝謝Chi - 這是一個很好的提示。我確實有這個問題。我的筆記本電腦上的/ etc/hosts將主機指向127.0.0.1。但是,我改變了它,但它仍然沒有改變。我實際上嘗試了所有3個IP地址。我嘗試了硬連線IP,無線IP和VPN(tun0-00)。我仍然得到相同的結果。 – digitaleagle

+0

Thinks Chi - 這只是爲我節省了很多時間。 – jhilmer

12

我終於找到了答案(至少對於我的情況)!問題在於SELinux。我關閉了SELinux,它沒有任何問題。

如果你有興趣在所有的血淋淋的細節,你可以在my blog讀到它,但是讓我在這裏詳細的有關事實...

在遠程機器上,我用dmesg來查看日誌消息:

dmesg | tail 

我發現這樣一些信息:

type=1400 audit(1332520527.110:51337): avc: denied { read } for pid=25240 comm="sshd" name="authorized_keys" dev=dm-5 ino=167 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file 

你可以用這個檢查的SELinux的狀態命令:

$ sestatus 
SELinux status: enabled 
SELinuxfs mount: /selinux 
Current mode: permissive 
Mode from config file: permissive 
Policy version: 24 
Policy from config file: targeted 

您可以使用此命令將其設置爲寬容模式:

setenforce 0 

有關SELinux的更多信息,我找到了Red Hat's guide helpful。另外,對於其他SSH問題,我發現David's blog有助於獲取日誌幫助。

對我來說,之後,我的X11轉發開始工作沒有問題。

SELinux阻止了其他幾件不同的事情。它無法創建必要的文件來進行密鑰驗證。我還發現它阻止ssh-keygen在主目錄中創建密鑰。

0
sudo grep X11Forwarding /etc/ssh/sshd_config 

X11Forwarding yes 
#sestatus 
SELinux status: enabled 
SELinuxfs mount: /selinux 
Current mode: permissive 
Mode from config file: permissive 
Policy version: 24 
Policy from config file: targeted 
#You can turn it to permissive mode with this command: 
#setenforce 0 
1

除了上面@Chl的回答,我還有一個腐敗〜/ .Xauthority文件。

由於某些原因,即使在我的主目錄下它也被root擁有。所以我不得不sudo -s然後刪除它。

然後用touch ~/.Xauthority

重建它之後X轉發爲我工作的,Ubuntu 14.04之下。

+0

同樣,我只是沒有一個'〜/ .Xauthority'文件,並創建它(空)解決了這個問題。 –

2

我也碰到過這個。但就我而言,這是因爲我前幾天刪除了IPv6支持。然後我碰到this thread解釋如何確保sshd只使用IPv4。

這是我做到了,這個附加:

AddressFamily inet 

您ssh_config中文件(在Ubuntu的/ etc/SSH/sshd_config中),並sshd的重新加載其配置(殺-SIGHUP PID-OF- sshd的)。

+0

當試圖使用Putty ssh時,Google Compute Engine的最新Ubuntu啓動磁盤映像也需要這行代碼!我花了一個工作日計算出來。 http://www.straightrunning.com/XmingNotes/trouble.php –

+0

你可以用'ssh' cli args'-o「來測試這個AddressFamily inet'' – danodonovan