我一直试图通过我的笔记本电脑使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转发工作吗?
答案 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 -X
和ssh -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