Последовательный запуск команд на кластере с UNIX-сервера. Часть 2: Remote shell (rsh)

Установка и настройка rsh

Научитесь конфигурировать remote shell (rsh) на серверах IBM System p™ и System x™ таким образом, чтобы UNIX®-сервер имел доступ к удаленному серверу без пароля.

Хэриш Чаухан, Linux-разработчик, IBM 

Хэриш Чаухан (Harish Chauhan) работает в IBM с 1998. Из последних семи лет в IBM он пять лет работал в India Research Lab и более полутора лет - в IBM T.J.Watson Research Center. Хэриш в настоящее время руководит Linux Center of Competency в Бангалоре, Индия. Вы можете связаться с ним по адресу hchauhan@in.ibm.com.



29.10.2007

Замечание: эта статья предназначена для начинающих пользователей и администраторов UNIX®. Более опытные пользователи UNIX, скорее всего, уже знают несколько вариантов решения этой задачи.

Вступление: реализация удаленного запуска команды на нескольких компьютерах

Когда вы слышите, как кто-то говорит о shell, понимаете ли вы точно, что имеется в виду? Обычно на любой UNIX-машине в начале сеанса работы с терминалом (terminal session) вы вводите команды, например useradd username, passwd password, system-config-printers и так далее. Этот shell (командный процессор) является локальным и работает на вашей машине, таким образом, все ваши команды выполняют действия на вашей машине локально.

А что, если вы хотите выполнить команду на нескольких машинах: например, установить дату на всех компьютерах локальной сети? Один вариант – зайти на каждую машину по отдельности и выполнить команду date. Более удачный вариант – автоматизировать процедуру, зайдя на сервер и с помощью rsh установив дату и время на всех остальных компьютерах по очереди. Чтобы установить дату дистанционно, вам понадобится установить на компьютерах такие инструменты, как TSecure Shell (SSH) и remote shell (rsh). Как правило, когда вы пытаетесь получить доступ к удаленному компьютеру, вам необходимо ввести пароль. Однако, вы можете настроить SSH и rsh в вашем окружении таким образом, чтобы система не спрашивала пароль. В этой статье объясняется как конфигурировать rsh в вашей среде. В части 1 рассматривался SSH.


Оборудование, программное обеспечение, настройка

Описанные в статье задачи решены на следующем оборудовании и программном обеспечении:

  • серверы 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. Диаграмма сети
Диаграмма сети

Проделайте следующие действия:

  1. Установите RHEL Version 4.0 Update 3 на все машины в вашей сети, в нашем случае - node1.my.com, node2.my.com, и node3.my.com , показанные на рисунке 1. (Обратите внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке). Для написания статьи я использовал базовый дистрибутив RHEL4.
  2. Убедитесь, что rsh-server-0.17-25.1 установлен на всех машинах, как показано в листинге 1.
  3. Если rsh-server-0.17-25.1 уже установлен, вы обнаружите на ваших машинах файлы rsh, rlogin и rexec в директории /etc/xinetd.d/ , как показано в листинге 2 (Внимание: сервисы rsh, rlogin и rexec по умолчанию заблокированы).
  4. В случае, если rsh-server-0.17-25.1 не установлен, установите его с дисков RHEL4, как показано в листинге 3. Также вы можете использовать команду #system-config-packages для установки сервера rsh из rpm.
Листинг 1. rsh RPM
     #rpm -qa|grep rsh-server
				rsh-server-0.17-25.1
Листинг 2. Сервисы rsh,rlogin и rexec
     /etc/xinetd.d

     -rw-r--r--  1 root root 361 Nov 23  2004 rexec
     -rw-r--r--  1 root root 378 Nov 23  2004 rlogin
     -rw-r--r--  1 root root 431 Nov 23  2004 rsh


     #cat /etc/xinetd.d/rsh 
			
     service shell
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rshd
     disable		= yes
     }


     #cat /etc/xinetd.d/rogin

     service login
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rlogind
     disable		= yes
     }

     #cat /etc/xinetd.d/rexec 

     service exec
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rexecd
     disable 	= yes
     }
Листинг 3. Инсталляция rsh
     #rpm -ivh rsh-server-0.17-25.1.i386.rpm

Конфигурация для root и обычных пользователей

Вам понадобится использование двух следующих конфигураций:

  • Пользователь Root
  • Обычный пользователь, в нашем случае - myuser

Рассмотрим сначала конфигурацию rsh для администратора - пользователя root. Чтобы сконфигурировать rsh для root, проделайте следующие шаги:

  1. Зайдите в систему как root
  2. Включите сервисы rsh, rlogin и rexec на всех машинах, как показано в листинге 4. (Внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке.) Вы можете использовать для разблокировки сервисов команды #system-config-services или #ntsysv. Если вы уже хорошо разбираетесь в Unix, то можете вручную проделать необходимые изменения в соответствующих файлах.
  3. Создайте файл /root/.rhosts на всех машинах, как показано в листинге 5. Включите в этот файл имена всех машин, на которых хотите запускать команды без введения пароля.
  4. Добавьте записи rsh и rlogin в файл /etc/securetty, как показано в листинге 6.
  5. Проведя перечисленные изменения, на всех машинах перезапустите сервис xinetd , как показано в листинге 7.
  6. Протестируйте вашу среду с помощью команды #rsh node3 date. Эта команда позволит вам увидеть дату, установленную на компьютере node3.my.com, как показано в листинге 8. В случае, если вы хотите зайти на node3, выполните команду #rsh node3, как показано в листинге 9.
Листинг 4. Сервисы rsh, rlogin и rexec
     #cat /etc/xinetd.d/rsh 
			
     service shell
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rshd
     disable		= no
     }


     #cat /etc/xinetd.d/rogin

     service login
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rlogind
     disable		= no
     }

     #cat /etc/xinetd.d/rexec 

     service exec
     {
     socket_type	= stream
     wait		= no
     user		= root
     log_on_success	+= USERID
     log_on_failure 	+= USERID
     server		= /usr/sbin/in.rexecd
     disable 	= no
     }
Листинг 5. Файл /root/.rhosts
     #cat /root/.rhosts 
     node1.my.com	
     node2.my.com	
     node3.my.com
Листинг 6. Файл /etc/securetty
     #cat /etc/securetty
     rlogin
     rsh
     console
     vc/1
     vc/2
     ..
     ..
Листинг 7. Запуск и перезапуск сервиса xinetd
     #service xinetd stop/start OR #service xinetd restart
Листинг 8. Исполнение комады date на node3 с компьютера node1
     node1.my.com>#rsh node3 date
     Mon Aug 28 17:44:48 IST 2006
Листинг 9. Получение доступа к node3 без введения пароля
     node1>#rsh node3
     node3>#

Теперь настроим rsh для обычного пользователя, в данном случае - myuser. Предположим, что пользователь с именем myuser уже существует на всех машинах. Рассмотрим ситуацию, когда пользователь myuser может исполнять команды на удаленном компьютере без введения на нем пароля.

  1. Зайдите как root.
  2. Включите сервисы rsh, rlogin и rexec на всех машинах, как показано в листинге 4.
  3. Создайте файл /etc/hosts.equiv, как показано в листинге 10.
  4. Далее перезапустите сервис xinetd, как показано в листинге 7.
  5. Зайдите как myuser, как показано в листинге 11.
  6. Проверьте дату в вашей среде, исполнив команду $rsh node3 date. Результатом будет получение даты на машине node3.my.com, как показано в листинге 12.
Листинг 10. Файл /etc/hosts.equiv
     #cat /etc/hosts.equiv
     node1.my.com	myuser
     node2.my.com	myuser
     node3.my.com	myuser
Листинг 11. Вход под именем myuser
     node1>#su - myuser
     node1>$
Листинг 12. Выполнение команды date на node3 от имени myuser
     node1>$rsh node3 date
     Mon Aug 28 17:49:28 IST 2006

Вывод: использование rsh экономит ваше время!

В этой статье вы научились настраивать rsh в сетевой среде таким образом, чтобы быстрее и проще выполнять необходимые действия. Это не только экономит время, но и дает вам большую гибкость за счет возможности выполнять команды без введения пароля на большом количестве машин. В части 1 была рассмотрена настройка SSH, другой возможности последовательного исполнения команд в вашем окружении без введения пароля.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, AIX и UNIX
ArticleID=264394
ArticleTitle=Последовательный запуск команд на кластере с UNIX-сервера. Часть 2: Remote shell (rsh)
publish-date=10292007