Пересылка ssh X11 не будет работать
Я пытался заставить порт 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 работает с компьютера под управлением Windows, используя Xming и Putty, на один и тот же сервер. Я должен вручную настроить переменную 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 ответов
Я наконец нашел ответ (по крайней мере, для моей ситуации)! Проблема была в SELinux. Я выключил SELinux, и он работал без проблем.
Если вы интересуетесь всеми мрачными подробностями, вы можете прочитать об этом в моем блоге, но позвольте мне подробно изложить соответствующие факты здесь...
На удаленной машине я использовал 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 полезным. Кроме того, что касается других проблем SSH, я нашел блог Дэвида полезным для получения помощи в регистрации.
Для меня после этого моя пересылка X11 начала работать без проблем.
SELinux предотвращал несколько других вещей. Не удалось создать файлы, необходимые для проверки подлинности ключа. Я также обнаружил, что он блокирует ssh-keygen от создания ключей в домашнем каталоге.
Я тоже наткнулся на это. Но в моем случае это было потому, что я удалил поддержку IPv6 несколько дней назад. Затем я наткнулся на эту ветку, объясняющую, как убедиться, что sshd использует только IPv4.
Вот как я это сделал, добавьте это:
AddressFamily inet
в свой ssh_config-файл (в Ubuntu /etc/ssh/sshd_config) и заставьте sshd перезагрузить свою конфигурацию (kill -SIGHUP pid-of-sshd).
У меня возникла та же проблема с контейнером Debian OpenVZ, и проблема, похоже, возникла из моего файла /etc/hosts, где "localhost" был связан с 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.
Помимо ответа @Chl выше, у меня также был поврежденный файл ~/.Xauthority.
По какой-то причине он принадлежал пользователю root даже в моем домашнем каталоге. Так что мне пришлось sudo -s
а затем удалил его.
Затем воссоздал его с touch ~/.Xauthority
После этого у меня работала переадресация X под Ubuntu 14.04.
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