• В файле /etc/ssh/sshd_configна компьютере, на котором выполняется SSH-сервер (эта машина играет роль клиента в X-взаимодействии), опция X11Forwardingдолжна иметь значение yes. Эта опция сообщает серверу SSH о том, что локальные вызовы X-сервера должны перехватываться и направляться SSH-клиенту.
При туннелировании X-соединения сервер SSH "подменяет" локальный X-сервер. Если конфигурация установлена правильно, средства поддержки SSH устанавливают переменную окружения DISPLAYтаким образом, что X программы передают данные через порт локального X-сервера (по умолчанию это X-сервер 10, или TCP-порт 6010). С этим портом связывается сервер SSH. Вместо того чтобы отображать информацию на локальной машине, сервер SSH кодирует ее и передает клиенту SSH. Клиент, в свою очередь, запрашивает локальный X-сервер (он определяется значением переменной окружения DISPLAYна этом компьютере), а данные, полученные в результате этого обращения, передает серверу SSH, который доставляет информацию X-клиенту. Таким образом, сервер SSH "выдает себя" за X-сервер, а клиент SSH "подменяет" клиентскую программу X Window.
Такой подход имеет ряд преимуществ по сравнению с обычным X-обменом. Для взаимодействия двух компьютеров используется лишь одно соединение, что упрощает настройку сетевых средств. Если вы хотите спрятать X-сервер за брандмауэром или маршрутизатором, выполняющим NAT-преобразование, это проще сделать при работе посредством SSH, чем в случае, когда используется Telnet или другой протокол удаленной регистрации. Кроме того, протокол SSH предполагает кодирование передаваемых данных. Поэтому если информация будет перехвачена по пути от одного компьютера к использовать ее вряд ли удастся. Туннелирование X-соединения средствами SSH имеет один недостаток. Как известно, для кодирования информации приходится выполнять большой объем вычислений, поэтому использование SSH создает дополнительную нагрузку на процессоры компьютеров на обоих концах соединения. В результате скорость обмена X-клиента с X-сервером снижается. Замедление работы вследствие использования SSH заметно при скорости процессора около 200 МГц, однако во многих случаях повышение уровня защиты оправдывает уменьшение производительности компьютеров. Чтобы снизить требования к пропускной способности линий, можно использовать сжатие информации. С другой стороны, сжатие данных создает дополнительную нагрузку на процессор, что может еще больше уменьшить скорость обмена. Желательно испробовать обмен данными со сжатием и без сжатия и экспериментально определить, какой режим более благоприятен для компьютера и сетевых средств.
Сказанное выше предполагает, что на обоих концах соединения используются компьютеры под управлением Linux или UNIX. Если X-сервер выполняется в среде Windows, MacOS, OS/2 или в другой операционной системе, следует выяснить, поддерживает ли клиент SSH туннелирование X-соединений. Если клиент SSH предоставляет такую возможность, вам надо уметь активизировать данные средства. Подробную информацию вы получите, прочитав документацию на программы поддержки SSH.
Основные действия по организации X-взаимодействия
В данной главе были рассмотрены самые разнообразные средства установления X-соединения. В ваше распоряжение предоставляется настолько много возможностей, что разобраться с ними бывает достаточно трудно. Ниже описаны действия по установлению типичного соединения. Это описание является своеобразным итогом предыдущего обсуждения.
1. Запуск X-сервера. Если вы используете систему Linux, средства X-регистрации могут быть предусмотрены при загрузке. Некоторые конфигурации системы предполагают запуск X-сервера по команде startx. В Windows, MacOS и других средах X-сервер надо запускать вручную либо настраивать операционную систему для автоматического запуска соответствующей программы.
2. Настройка X-сервера для установления соединения. Для того чтобы X-взаимодействие могло осуществляться, необходимо сообщить серверу X Window о том, что он должен обрабатывать запросы от удаленных компьютеров на установление соединений. Это можно сделать, запуская программу xhostна компьютере, на котором установлен X-сервер, либо передавая ключ xauthклиентской системе. Если вы используете SSH для туннелирования соединения, действия, выполняемые на этом шаге, не обязательны, но при этом вам необходимо сконфигурировать клиент SSH и сервер SSH.
3. Установление соединения с X-клиентом. Для соединения с компьютером, на котором выполняется X-клиент, вы можете использовать любой протокол удаленного доступа, например Telnet или SSH. Заметьте, что на удаленном компьютере выполняется сервер удаленной регистрации и клиент X Window.
Читать дальше