【问题标题】:ssh X11 forwarding won't workssh X11 转发不起作用
【发布时间】:2011-12-30 14:18:39
【问题描述】:

我一直在尝试让 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 转发?

【问题讨论】:

  • 我为此获得了风滚草徽章!这是一件坏事还是一件好事?我只是希望有人对我还可以尝试什么有一些想法。

标签: ssh x11-forwarding


【解决方案1】:

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

我是这样做的,添加这个:

AddressFamily inet

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

【讨论】:

  • Google Compute Engine 最新的 Ubuntu 启动磁盘映像在尝试使用 Putty 进行 ssh 时也需要此行!我花了一个工作日解决这个问题。 straightrunning.com/XmingNotes/trouble.php
  • 您可以使用ssh cli args -o "AddressFamily inet" 进行测试
【解决方案2】:

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

由于某种原因,即使在我的主目录下,它也归 root 所有。所以我只好sudo -s然后删除了。

然后用touch ~/.Xauthority重新创建它

在 Ubuntu 14.04 下,X 转发对我有用。

【讨论】:

  • 同样,我只是没有 ~/.Xauthority 文件,创建它(空)解决了问题。
【解决方案3】:
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

【讨论】:

    【解决方案4】:

    我终于找到了答案(至少就我的情况而言)!问题是 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 在主目录中创建密钥。

    【讨论】:

      【解决方案5】:

      我在 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。

      【讨论】:

      • 感谢 Chi -- 这是一个很好的提示。我确实有这个问题。我笔记本电脑上的 /etc/hosts 将主机指向 127.0.0.1。但是,我改变了它,它仍然没有改变。我实际上尝试了所有 3 个 IP 地址。我尝试了硬连线 IP、无线 IP 和 VPN (tun0-00)。我仍然得到相同的结果。
      • Thnks Chi -- 这为我节省了很多时间。
      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2014-02-26
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多