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).