Замечание: Эта статья предназначена исключительно для начинающих пользователей и администраторов UNIX. Эксперты наверняка уже знакомы с некоторыми способами выполнения рассматриваемой здесь задачи.
Введение: Выполнение удаленной команды на множестве компьютеров
Знаете ли вы, что такое на самом деле shell, и какие возможности он дает? По существу, он предоставляет вам возможность открывать сессию терминала на любой UNIX®-машине, где вы набираете команды для осуществления каких-либо действий, такие как useradd username, passwd username, system-config-printers и так далее. Этот shell является локальным для вашей машины, и любая введенная вами команда выполняется на вашей локальной машине.
Однако есть и такие задачи, как выполнение одной и той же команды на различных машинах, например, установка даты на всех машинах сети. Один из способов решить эту задачу - это просто последовательно зайти на каждую отдельную машину и запустить на ней команду date. Лучшим способом было бы делать это автоматически, то есть зайти только на сервер и заставить его установить дату на всех остальных машинах сразу. Для удаленной установки даты вам нужны такие инструменты, как Secure Shell (SSH) или remote shell (rsh), установленные на ваших машинах. Обычно, когда вы осуществляете доступ к удаленным машинам, у вас запрашивается пароль, чтобы идентифицировать вас как авторизованного пользователя. Однако вы можете настроить SSH и rsh в вашей системной среде так, чтобы обойти ввод и подтверждение паролей. В этой статье внимание сосредоточено на том, как настраивать SSH под вашу среду. В Части 2 вы найдете описание настройки rsh.
Оборудование, программное обеспечение и установка
Для решения описываемых здесь задач используйте следующее оборудование и программное обеспечение:
- IBM System p™ и System x™ серверы, такие как System p520 или System x345
- Red Hat Enterprise Linux® Version 4.0 Update 3 (RHEL Version 4.0 Update 3)
Рисунок 1. Схема установки
Теперь проделайте следующие шаги:
- Установите RHEL Version 4.0 Update 3 на всех машинах вашей среды, назвав их, например, node1.my.com, node2.my.com, и node3.my.com, как это показано на Рисунке 1. Отметим, что любой node (узел) может быть сервером System p или сервером System xs.
- Убедитесь, что
opensshRed Hat Package Manager (RPM) установлен на всех ваших машинах, как это показано на Рисунке 2.
Рисунок 2. openssh RPM-ы
- Если
opensshу вас уже установлен, вы найдете на вашей машине папку/etc/ssh, как это показано на Рисунке 3. Эта папка содержит в себе все связанные с SSH конфигурационные файлы. Вы можете настроитьsshdпутем изменения этих файлов, но я не буду детально рассматривать эти вопросы в данной статье.
Рисунок 3. Установленный путь /etc/ssh
- Если у вас не установлен
openssh, то установите его с RHEL Version 4.0 Update 3 CDs (RHEL версия 4.0, обновление 3, на 3-х дисках), используя следующие команды:#rpm -ivh openssh-*или#system-config-packages.
Установка настроек пользователя root и обычных пользователей
Вам нужно настроить пользователей двух различных типов:
-
Пользователь
Root - Обычный пользователь, в данном случае
myuser
Давайте сначала рассмотрим настройку SSH для пользователя Root. Для того, чтобы настроить пользователя Root, проделайте следующие шаги:
- Создайте два ключа, секретный (private) и открытый (public). Для того, чтобы создать эту пару ключей, вам нужно запустить команду
ssh-keygen, как это показано на Рисунке 4. Замечание:ssh-keygenзапросит у вас идентификационную фразу, но вам следует просто нажать Enter, чтобы продолжить. Как показано на Рисунке 5, будет создана папка.sshв папке/root. Эта пака будет содержать созданные открытый (id_rsa.pub) и секретный (id_rsa) ключи.
Рисунок 4. ssh-keygen
Рисунок 5. Созданные ключи, секретный и открытый
- Повторите это для каждой машины в вашей среде; для каждой машины должны быть созданы свои собственные, отличные от всех остальных секретный и открытый ключи. Замечание: Созданные открытый и секретный ключи не будут совпадать, даже если вы запустите
ssh-keygenнесколько раз на одной и той же машине. - После запуска
ssh-keygenна всех узлах, вы можете собрать ключиid_rsa.pubс каждой машины. Для сбора ключейid_rsa.pubможно выбрать любой способ, в том числе дискеты, USB, FTP и так далее. - Итак, положим, что на этом шаге вы скопировали все открытые ключи в папку
/root/.sshнаnode1.my.com, как это показано на Рисунке 6, гдеid_rsa.pub_node2- это открытый ключ node2.my.com иid_rsa.pub_node3- открытый ключ node3.my.com. Вам необходимо добавить содержимое всех трех файлов в один файл, используя командуcat.
Рисунок 6. Собранные ключи id_rsa.pub
- Теперь нужно объединить содержимое всех собранных открытых ключей в файл, названный
authorized_keys, как это показано на Рисунке 7 ниже. Затем нужно поместить этот файл в папку/root/.ssh. Замечание: Файл обязательно должен быть названauthorized_keys. Никакое другое имя не подойдет.
Рисунок 7. Создание файла authorized_keys
Замечание: authorized_keys2 также подойдет, но только для SSH protocol Version 2 (протокол SSH версия 2). - В итоге содержание файла
authorized_keysбудет выглядеть как код, показанный на Рисунке 8. Замечание: Каждая строка, показанная на Рисунке 8, соответствует одной машине вашей среды.
Рисунк 8. Содержимое файла authorized_keys
- Теперь вы готовы копировать файл
authorized_keysв папку/root/.sshна каждой машине, на которую вы захотите заходить без ввода пароля. Вы можете использовать любой стандартный метод для копирования файлов но каждую из машин, включая использование дискеты, USB, FTP и так далее. - Как только файл
authorized_keysскопирован на все машины, вы можете протестировать сделанную установку следующей командой:
# ssh node2.my.com date
Если все было сделано правильно, то вы должны увидеть выдачу данных сnode2.my.comбез необходимости при этом вводить пароль.
Рисунок 9.
Далее рассмотрим настройку SSH для любого обычного пользователя, в данном случае myuser.
Положим, что имя пользователя myuser существует на всех узлах, а задача сводится к тому, чтобы обеспечить пользователю myuser возможность выполнять любые команды без ввода пароля. Например:
- Войдите на любой компьютер в системе под именем
myuser. - Запустите команду
#ssh-keygen -t rsa, которая создает открытый и секретный ключи дляmyuserв папке/home/myuser/.ssh, как это показано на Рисунке 10.
Рисунок 10. Открытый и секретный ключи пользователя
- Запустите команду
ssh-keygenна всех узлах, зарегистрировавшись какmyuser. - Соберите все открытые ключи и создайте файл
authorized_keys, как это было на Шаге 5 для пользователяroot. На Рисунке 11 показано содержимое файлаauthorized_keys.
Рисунок 11. Файл authorized_keys пользователя
- Наконец, скопируйте файл
authorized_keysв папку/home/myuser/.sshна все машины и установите уровень прав, как600, это проиллюстрировано на Рисунке 12, с использованием команды$chmod 600 /home/myuser/.ssh/authorized_keys. Это установит уровень прав на доступ как 600, что означает, что только владелец файла илиmyuserбудет иметь право на чтение или редактирование этого файла. Никто другой не может изменять его.
Рисунок 12. Права доступа к файлу authorized_keys
- Протестируйте теперь состояние вашей среды командой
$ssh node3.my.com date. Эта команда должна выдать вам данные сnode3.my.com.
Заключение: экономия времени и обеспечение гибкости
Из этой статьи вы узнали о том, как настраивать SSH в вашей среде так, чтобы вы могли выполнять многие действия с большей легкостью и быстротой. Это не только помогает экономить время, но и предоставляет вам возможности более гибкого управления, выполнения одних и тех же действий на нескольких машинах сразу и автоматически. В Части 2 рассказывается про настройку rsh, предоставляющего собой альтернативный способ запуска команд сразу на нескольких машинах вашей среды в тех случаях, когда вопрос безопасности стоит не слишком остро.
Научиться
-
Оригинал этой статьи(EN)
- "Последовательный запуск команд для группы сетевых абонентов с UNIX сервера, Часть 2" (developerWorks, август 2006): Узнайте о том, как настраивать remote shell (rsh) на компьютерах IBM System p и System x.
-
OpenSSH: Посетите этот сайт, чтобы узнать больше про OpenSSH.(EN)
-
HOWTOs on Linux (Как это делается в Linux): Посетите этот сайт, чтобы узнать больше про Linux или найти решение возникнувшей проблемы.(EN)
-
IBM Systems: Хотите еще? Раздел developerWorks IBM Systems содержит сотни информативных статей, а также руководства вводного, среднего и продвинутого уровней.(EN)
-
Технические события и webcast-конференции developerWorks: Оставайтесь в курсе технических событий и webcast-конференций developerWorks.(EN)
Получить продукты и технологии
-
Испытываемое программное обеспечение IBM: Создайте новый проект вашей разработки при помощи программного обеспечения, предназначенного для загрузки непосредственно с developerWorks.(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Примите участие в форумах IBM Systems и в блогах developerWorks
, и присоединяйтесь к сообществу developerWorks.(EN)
Хэриш Чаухан (Harish Chauhan) работает в IBM с 1998. Из последних семи лет в IBM он пять лет работал в India Research Lab и более полутора лет - в IBM T.J.Watson Research Center. Хэриш в настоящее время руководит Linux Center of Competency в Бангалоре, Индия. Вы можете связаться с ним по адресу hchauhan@in.ibm.com.