SSH и X-форвардинг

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Иногда требуется запустить какую-нибудь графическую утилиту удаленно, но при этом VNC либо недоступен (отсутствует правило в файрволе), либо нежелателен. Для этих целей можно воспользоваться возможностью сервиса sshd пробрасывать сессии X11 от сервера клиентам. При этом очевидны плюсы:

  • зашифрованный канал
  • меньший трафик (передается информация, необходимая для геометрического построения элементов интерфейса, а не картинка)

Содержание

[править] Установка

Для поддержки X-Forwarding требуется собрать пакет openssh с поддержкой X:

Code: Флаги openssh
net-misc/openssh X

Этот флаг вытянет по зависимостям все необходимые пакеты из категории x11-apps.

[править] Настройка

Теперь необходимо включить поддержку X11 Forwarding в конфигурационном файле sshd_config.

Примечание: Не перепутайте, в файле sshd_config, а не ssh_config!

Добавьте/раскомментируйте следующую строку:

Code: /etc/ssh/sshd_config
...
X11Forwarding yes
...

После чего перезапускаем сервис sshd:

Code: Перезапуск sshd
# /etc/init.d/sshd restart

[править] Настройка клиентов

На стороне клиентов должны быть клиентские библиотеки X11 (неактуально, если в качестве клиента выступает рабочая станция Linux с настроенным графическим окружением :)). Для Windows и других экзотических ОС есть собственные реализации X11-серверов, которые могут понадобиться для нормальной работы.

Кроме этого, для клиента не нужно никаких дополнительных настроек.

Теперь попробуем подключиться к серверу:

Code: Запуск сеанса ssh с X11-forwarding
# ssh -X [пользователь@]<адрес сервера> [запускаемое приложение]

Если при этом появляется ошибка xterm Xt error: Can't open display: your_client_name:0.0, то это может означать, что X11Forwarding не включен на сервере

[править] Автоматический форвардинг

Если лень каждый раз добавлять ключ -X при открытии новой сессии, то можно добавить его в список опций по умолчанию. Для этого в файле /etc/ssh/ssh_config (или ~/.ssh/config) добавьте следующие строки:

Примечание: А вот на этот раз в файле ssh_config
Code: Файл /etc/ssh_config
# Для конкретного узла
Host <имя_узла> 
  ForwardX11 yes
# Или можно применить ко всем:
Host *
  ForwardX11 yes

[править] Проблемы

[править] BadAtom/BadWindow

Если в консоли постоянно вылазят сообщения о BadAtom или BadWindow, попробуйте добавить строку ForwardX11Trusted yes в файл ssh_config под соответствующей записью узла

[править] -X и -Y

Вместо параметра -X ssh может принимать -Y при форвардинге. Этот ключ может быть полезным в некоторых ситуациях, когда приложение не захочет работать. Однако помните, что -Y является небезопасной реализацией, так как на серверной части можно будет перехватить данные от пользователя (нажатые клавиши, например)

[править] Клиентские библиотеки X11

  • Xming (GPL2, Windows)
  • Cygwin/X (GPL2, Windows, требуется Cygwin)
Личные инструменты
На других языках