ssh X11转发不起作用

时间:2011-11-16 16:19:57

标签: ssh x11-forwarding

我一直试图通过我的笔记本电脑使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和Putty的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

我的服务器是RedHat Enterprise Linux 6,我的笔记本电脑是Fedora 15。

任何人都可以给我任何想法,试图让我的笔记本电脑上的SSH X11转发工作吗?

5 个答案:

答案 0 :(得分: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在主目录中创建密钥。

答案 1 :(得分:2)

我在Debian OpenVZ容器上遇到了同样的问题,问题似乎来自我的/ etc / hosts文件,其中“localhost”受到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。

答案 2 :(得分:2)

我也碰到了这个。但就我而言,这是因为我在几天前删除了IPv6支持。然后我碰到了this thread,解释了如何确保sshd仅使用IPv4。

我就是这样做的,加上这个:

AddressFamily inet

到你的ssh_config文件(在Ubuntu / etc / ssh / sshd_config上)并让sshd重新加载它的配置(kill -SIGHUP pid-of-sshd)。

答案 3 :(得分:1)

除了@Chl上面的回答,我还有一个损坏的〜/ .Xauthority文件。

出于某种原因,即使在我的主目录下,它也归root所有。所以我不得不sudo -s然后将其删除。

然后使用touch ~/.Xauthority

重新创建它

之后X转发为我工作,在Ubuntu 14.04下。

答案 4 :(得分: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