. Здесь имя файла может быть любым, а имя дисплея — это имя, которое вы выяснили на предыдущем шаге процедуры. Например, вы можете задать команду
extract xfer-auth term.threeroomco.com:0
. В результате запись файла
.Xauthority
для дисплея будет скопирована в указанный файл. Файл используется для передачи ключа на клиентский компьютер.
4. Введите команду
exit
, чтобы завершить работу с программой
xauth
.
5. Скопируйте файл, созданный при выполнении команды
extract
, да клиентский компьютер (удаленный компьютер, на котором расположена программа, предназначенная для выполнения). Сделать это можно различными способами:
использовать средства FTP или NFS, перенести файл на дискете и т.д.
6. Зарегистрируйтесь на компьютере, выполняющем функции X-клиента.
7. Задайте команду
xauth
, чтобы запустить утилиту
xauth
на клиентской машине.
8. Введите команду
merge имя_файла
. В этой команде должно быть указано имя файла, которое вы сгенерировали посредством команды
extract
и скопировали на клиентский компьютер. (Возможно, вам придется указать путь к файлу.)
9. Задайте команду
list
. Данная команда, помимо прочих сведений, должна отобразить запись для X-сервера, которую вы только что включили. Если такая запись отсутствует, это значит, что какие-то из предшествующих действий были выполнены неправильно.
10. Введите команду
exit
, чтобы завершить работу
xauth
и сохранить внесенные изменения. (Заметьте, что в
xauth
также предусмотрена команда
quit
, которая не сохраняет изменения. Команду
quit
надо использовать в том случае, если при выполнении данной процедуры были допущены ошибки.)
Если на обоих компьютерах инсталлированы средства SSH, вы можете вместо описанной выше процедуры выполнить единственную команду.
# xauth list x_сервер:0 | sed -e 's/^ /add /' | ssh \
x_клиент– х xauth
В данном случае
xauth
вызывается в командной строке,
sed
используется для включения команды
add
в начало выходных данных, кроме того, утилита
xauth
запускается также на стороне X-клиента. При вызове данной команды необходимо учитывать следующее.
• Вместо
x_сервер
надо указать имя компьютера, за которым вы работаете, а вместо
x_клиент
— имя компьютера, на котором должна выполняться клиент-программа.
• Между
add
и последующей косой чертой (
/
) должен быть пробел. Эта команда передается утилите
xauth
на клиентском компьютере, и пробел должен отделять
add
от имени дисплея.
• Если конфигурация SSH предполагает ввод пароля либо фразы пароля, вам придется ввести соответствующие данные.
С этого момента X-сервер будет принимать обращения от X-клиентов, но, чтобы эти программы могли работать совместно, вам придется установить на клиентском компьютере опцию, позволяющую взаимодействовать с X-сервером (этот вопрос будет подробнее рассмотрен в следующем разделе). При установлении соединения клиент X Window обратится к файлу
.Xauthorit
y за ключом, соответствующим серверу.
Поскольку работа
xauth
основана на применении ключа, который известен только серверу и авторизованному клиенту, она обеспечивает более высокий уровень защиты, чем
xhost
. Кроме того, при использовании
xauth
доступ к серверу предоставляется только отдельным пользователям. X-сервер становится более устойчивым к атакам, осуществляемым путем подмены IP-адреса. Недостатком данного способа является передача ключей в незакодированном виде. Если локальная сеть не обеспечивает безопасность передаваемых данных либо если клиент с сервером взаимодействуют по Internet, ключ может быть похищен и злоумышленник получит доступ к X-серверу. Если при обмене данными в системе X Window необходимо обеспечить высокий уровень защиты, надо использовать SSH-соединение. Вопросы поддержки X-взаимодействия посредством SSH будут подробно рассмотрены в следующем разделе.
На заметку
Не все X-серверы сконфигурированы
для работы с
xauth
. Соответствующая опция обычно устанавливается в том случае, когда X-сервер запускается посредством XDM, GDM или KDM. Если вы запускаете X-сервер с помощью
startx
, поддержка
xauth
в ряде систем будет отсутствовать. В некоторых случаях вам придется отредактировать сценарий
startx
(он обычно располагается в каталоге
/usr/X11R6/bin
) так, чтобы в нем присутствовала опция
– auth файл_авторизации
; в качестве файла авторизации обычно указывается файл
.Xauthority
, находящийся в рабочем каталоге. Часто в редактировании
startx
нет необходимости.
Настройка X-клиента для работы с Х-сервером
Независимо от того, используете ли вы
xhost
или
xauth
, вы должны сконфигурировать клиентскую систему для работы с нужным X-сервером. Если, например, вы работаете за компьютером
term.threeroomco.com
, зарегистрировались на узле
biggie.threeroomco.com
и хотите, чтобы программа использовала компьютер
wrongone.threeroomco.com
в качестве X-терминала, вам не удастся сделать это. По умолчанию многие версии Linux сконфигурированы так, что даже если пользователь зарегистрировался с внешнего узла, они будут работать с локальным X-сервером.
При запуске X-программа читает значение переменной окружения
DISPLAY
и определяет, какой X-сервер следует использовать. Чтобы определить текущее значение этой переменной, надо на компьютере, выполняющем роль X-клиента, вызвать следующую команду:
$ echo $DISPLAY
biggie.threeroomco.com:0.0
Если отображаемая с помощью этой команды строка (в данном случае
biggie.threeroomco.com:0.0
) соответствует вашему серверу, вам не надо предпринимать никаких действий. (Первый дисплей обычно имеет номер 0 или 0.0; эти два значения эквивалентны.) Если же значение переменной
DISPLAY
указывает на X-клиент или другую систему либо если оно вовсе не определено, вам надо задать новое значение данной переменной. Необходимая для этого команда выглядит следующим образом:
$ export DISPLAY=term.threeroomco.com:0
Очевидно, что имя узла должно определять ваш X-сервер. При последующих запусках X-программа будет пытаться взаимодействовать с указанным сервером. Чтобы эти попытки были успешными, вам надо настроить X-сервер для работы с X-клиентом, т.е. запустить программу
xhost
, или создать запись
xauth
для клиента.
Туннелирование X-соединений через SSH
Из материала, рассмотренного ранее в данной главе, следует, что для инициализации Х-соединения используются два отдельных, независимых друг от друга протокола. Во-первых, работая на компьютере, выполняющем роль X-сервера, вы используете клиент-программу удаленной регистрации, работающую в текстовом режиме, например программу
telnet
. Во-вторых, после установления соединения вы инициируете взаимодействие X-клиента с X-сервером. Выполнив основные действия по установке соединений, вы можете вызвать на своем компьютере любую команду, например
xclock
, и соответствующая программа (в данном случае
xclock
) будет выполняться на удаленном компьютере. Данная конфигурация подходит для решения многих задач, но при ее использовании могут возникать проблемы. Одна из этих проблем связана с тем, что в сеансе X-взаимодействия данные передаются в незакодированном виде и могут быть перехвачены. Тот факт, что на каждом из взаимодействующих компьютеров должен выполняться сервер, также можно считать недостатком. Если эти компьютеры разделены брандмауэром или маршрутизатором, осуществляющим маскировку пакетов, эти программы должны быть сконфигурированы специальным образом, иначе обмен по протоколу X Window станет невозможным. Одно из возможных решений обеих проблем состоит в использовании протокола SSH. Этот протокол может применяться как для установления начального соединения между X-клиентом и X-сервером, так и для туннелирования данных, передаваемых в рамках этого соединения.