yes
опции ForwardX11
. Аналогичный результат можно получить, указав при запуске ssh
опцию -X
. (Обратите внимание на регистр символа; если в опции -х
вы зададите символ нижнего регистра, туннелирование будет запрещено.)
• В файле/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.
4. Настройка X-клиента для работы с требуемым X-сервером. Чтобы определить, какой компьютер должен использоваться в качестве X-сервера, X-клиент использует переменную окружения DISPLAY
. В некоторых системах значение этой переменной устанавливается автоматически, в остальных случаях вы должны сделать это самостоятельно, вызывая команду наподобие следующей: export DISPLAY=term.threeroomco.com:0
.
5. Запуск X-программы. Для того чтобы запустить X-программу, достаточно ввести ее имя в окне, посредством которого вы осуществляли удаленную регистрацию. Например, если вы регистрировались в окне xterm
, в нем же следует запускать требуемую программу.
В зависимости от способа соединения и аутентификации, некоторые стадии данной процедуры, например этапы 2 и 4, могут быть пропущены. В системах Windows и MacOS ряд действий выполняется автоматически. Например, в состав некоторых X-серверов входят минимальные средства удаленной регистрации с использованием Telnet или других протоколов. Эти средства автоматически вызываются при выводе xterm
. Если при настройке подобного сервера были указаны пользовательское имя и пароль, то после щелчка на соответствующей кнопке будет запускаться X-сервер и отображаться окно xterm
. Подробные сведения о каждом типе X-сервера можно найти в документации на него.
В результате выполнения описанной выше процедуры программа на удаленном компьютере выводит свои данные на экране X-сервера. Как правило, это происходит в окне, которое X-сервер открывает для отображения рабочего стола клиента. Обычно в локальной системе выполняется диспетчер окон. Если же вы хотите, чтобы на локальном компьютере поддерживались минимальные системные средства, а диспетчер окон и окружение рабочего стола реализовывались на удаленной машине, вам нужно соответствующим образом изменить стартовые сценарии X Window на локальном и удаленном компьютерах. Еще один подход состоит в использовании удаленного X-сервера регистрации; в этом случае основная нагрузка по поддержке окон и среды рабочего стола ложится на удаленную систему.
Использование сервера ХМСР
Если в сети не используется брандмауэр или маскирующий маршрутизатор, способный повлиять на обмен данными между клиентом и сервером, то каждый компьютер, на котором выполняется X-сервер, может быть использован как дисплей для любого X-приложения. Однако в некоторых случаях этого недостаточно; необходимо, чтобы X-сервер работал как локальный сервер удаленной системы, отображая ее окружение. Процедура регистрации, использующая Telnet, SSH или другой протокол удаленной регистрации, не всегда удобна для управления удаленной системой. Часто бывает удобнее работать с протоколом регистрации, входящим в систему X Window. Таким протоколом является XDMCP (X Display Manager Control