17.11. Туннелирование Х через SSH

Проблема

Вам хотелось бы работать с удалёнными сеансами X, но вы знаете, что они совершенно не защищены. Из-за этого данные X требуется пересылать через SSH.

Решение

Настройте и запустите SSH, как было описано в предыдущих разделах, затем включите пересылку X на сервере SSH в файле /etc/ssh/sshd_config. Укажите ключ -X при запуске сеанса SSH.

В файл /etc/ssh/sshd_config на сервере SSH включается строка:

X11Forwarding yes

При подключении к серверу используется ключ -X:

$ ssh -X saturn.test.net

Следующая команда проверяет, что пересылка X работает:

$ echo $DISPLAY
localhost:10.0

Если пересылка не работает, команда вернёт пустую строку. После успешной настройки любую программу X, установленную на сервере, можно запустить так, словно она является локальной.

Комментарий

Запуск удалённых сеансов X через SSH проще и надёжнее, чем запуск «обычных» сеансов X без SSH, в которых защита данных отсутствует. Тем не менее, некоторый риск всё же присутствует. Используйте этот способ для подключения только к доверенным хостам, так как администратор удалённого сервера может теоретически перехватить нажатия клавиш или данные, передаваемые по SSH. В редких случаях администратор может даже получить доступ к вашему локальному рабочему столу. Следите за тем, чтобы для локального файла ~/.Xauthority был установлен режим 600, чтобы исключить доступ к сеансам X со стороны других пользователей на удалённом хосте.

Проверьте настройки в файлах /etc/ssh/ssh_config и ~/.ssh/ssh_config, добавив следующие строки для предотвращения автоматической пересылки X и передачи данных агента на все хосты:

Host *
    ForwardX11 no
    ForwardAgent no

Эти настройки повышают безопасность, так как агенты и X-приложения не пересылаются на удалённый хост по умолчанию. Их можно временно переопределить, добавив -X или -Y в командной строке SSH.

Туннелирование X может повлиять на скорость работы: если удалённый сервер находится на большом физическом расстоянии или подключение к сети медленное, возможны заметные задержки в реакции на действия мыши и клавиатуры. Такие задержки связаны с передачей графических данных и ввода между локальным и удалённым хостами. При возникновении существенных задержек попробуйте уменьшить объём передаваемых данных, например, сократив разрешение окна удалённых приложений или избегая высокографических программ. Кроме того, использование компрессии SSH (флаг -C) может улучшить производительность в медленных сетях:

$ ssh -XC saturn.test.net

Компрессия снизит нагрузку на канал, ускорив отображение, хотя и увеличит нагрузку на CPU.

Этот метод безопасен и особенно полезен для удалённой настройки и управления X-приложениями на сервере. Применяйте туннелирование X, чтобы подключаться к серверу, выполняя необходимые задачи с минимальным риском для конфиденциальности данных.

См. также

ssh(1).