Прежде всего запустим агента. Обратите внимание на поименованную дочернюю оболочку. Если читатель не укажет ее имя, то будет получено сообщение об ошибке: «Нельзя открыть соединение к вашему агенту аутентификации (Could not open a connection to your authentication agent)».
effugas@OTHERSHOE ~ $ ssh-agent bash
После запуска агента добавляем ключи. В случае отсутствия аргумента будет добавлен ключ SSH1:
effugas@OTHERSHOE ~
$ ssh-add
Enter passphrase for effugas@OTHERSHOE:
Identity added: /home/effugas/.ssh/identity
(effugas@OTHERSHOE)
При наличии аргумента добавляется ключ SSH2:
effugas@OTHERSHOE ~
$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/effugas/.ssh/id_dsa:
Identity added: /home/effugas/.ssh/id_dsa (/home/effugas/
.ssh/id_dsa)
Теперь попытаемся подключиться к паре хостов, которые были запрограммированы для получения обоих ключей:
effugas@OTHERSHOE ~
$ ssh -1 effugas@10.0.1.10
Last login: Mon Jan 14 06:20:21 2002 from 10.0.1.56
[effugas@localhost effugas]$ ^D
effugas@OTHERSHOE ~
$ ssh -2 effugas@10.0.1.11
FreeBSD 4.3-RELEASE (CURRENT-12-2-01) #1: Mon Dec 3
13:44:59 GMT 2001
$
Добившись подключения к удаленному хосту, следует решить, что делать дальше. С помощью SSH-соединения можно стартовать команду на удаленном сервере или выполнить различные сетевые действия. Можно даже сделать и то, и другое, иногда предоставляя самому себе сетевой путь к только что инициированному серверу.
Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов
Переадресация (перенаправление) команд – одна из наиболее полезных возможностей протокола SSH. Она вытекает из его основополагающих принципов построения, когда был заново реализован целый ряд приложений r* операционной системы UNIX. У протокола SSH есть хорошо понятная возможность выполнения удаленных команд так, как будто это локальные команды. Например, вместо ввода
effugas@OTHERSHOE ~
$ ssh effugas@10.0.1.11
effugas@10.0.1.11”s password:
FreeBSD 4.3-RELEASE (CURRENT-12-2-01) #1: Mon Dec 3
13:44:59 GMT 2001
$ uptime
3:19AM up 18 days, 8:48, 5 users, load averages: 2.02,
2.04, 1.97
$
можно ограничиться следующими командами:
effugas@OTHERSHOE ~
$ ssh effugas@10.0.1.11 uptime
effugas@10.0.1.11”s password:
3:20AM up 18 days, 8:49, 4 users, load averages: 2.01,
2.03, 1.97
Действительно, можно образовать канал вывода между хостами, например так, как это показано в приведенном ниже простейшем примере:
effugas@OTHERSHOE ~
$ ssh effugas@10.0.1.11 “ls –l” | grep usocks
effugas@10.0.1.11”s password:
drwxr-xr-x 2 effugas effugas 1024 Aug 5 20:36
usocksd-0.9.3
-rw-r—r– 1 effugas effugas 54049 Jan 14 20:21
usocksd-0.9.3.tar.gz
Подобные функциональные возможности необычайно полезны для создания сетевых туннелей. Основная идея туннелей заключается в том, что нечто создает поток данных через обычно непреодолимые границы сетей. В данном случае разделенные границами сети немного напоминают аппаратные средства, поделенные на совершенно не связанные между собой блоки. (Требуется приложить много усилий для эффективного обособления программ и информационных файлов. Если этого удается добиться, то отказ в одной части программного кода почти никак не влияет на работу всего кода в целом и не приводит к отказу еще чего-нибудь благодаря абсолютной защите памяти, планированию работы центрального процессора и т. д. Между тем простое выполнение почтового сервера или Web-сервера читателя на различных системах при условии, что их много и они могут быть распределены по всему земному шару, предоставляет совершенно другой класс разделения процессов.) SSH превращает каналы в коммуникационную подсистему между хостами. В этих условиях становится справедливым следующее правило . Почти всегда можно использовать канал для передачи данных между процессами. При этом протокол SSH позволяет процессам разных хостов оставаться локальными.
...
Примечание
Не все используемые команды могут быть объединены путем создания канала. Тем из них, которые захватывают терминал и выводят на него данные, как, например, командам lynx, elm, pine или tin, для правильной работы требуется так называемая поддержка функций телетайпа TTY Названные команды в различных режимах рисования и стилях применяют так называемые неиспользуемые символы. По существу эти символы не используют 8 бит байта так, как это необходимо при применении каналов. Протокол SSH по-прежнему поддерживает использующие функции TTY-команды, но для этого требуется определить опцию -t.
Удаленное выполнение объединенных в канал команд может оказаться очень эффективным. В этом случае простейшие команды неожиданно приобретают способность преодолевать границы серверов и могут быть использованы с большой пользой. Например, большинство операций передачи файлов могут быть реализованы с использованием небольшого числа базовых инструментальных средств, которые присутствуют почти во всех дистрибутивах систем UNIX и Cygwin. Некоторые из базовых элементов перечислены в табл. 13.3.
Читать дальше
Конец ознакомительного отрывка
Купить книгу