 | Уровень сложности: простой Хэриш Чаухан, Linux-разработчик, IBM
29.10.2007 Научитесь конфигурировать remote shell (rsh) на серверах IBM System p™ и System x™ таким образом, чтобы UNIX®-сервер имел доступ к удаленному серверу без пароля.
Замечание: эта статья предназначена для начинающих пользователей и администраторов 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. Диаграмма сети
Проделайте следующие действия:
- Установите RHEL Version 4.0 Update 3 на все машины в вашей сети, в нашем случае -
node1.my.com, node2.my.com, и node3.my.com , показанные на рисунке 1. (Обратите внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке). Для написания статьи я использовал базовый дистрибутив RHEL4.
- Убедитесь, что
rsh-server-0.17-25.1 установлен на всех машинах, как показано в листинге 1.
- Если
rsh-server-0.17-25.1 уже установлен, вы обнаружите на ваших машинах файлы rsh, rlogin и rexec в директории /etc/xinetd.d/ , как показано в листинге 2 (Внимание: сервисы rsh, rlogin и rexec по умолчанию заблокированы).
- В случае, если
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, проделайте следующие шаги:
- Зайдите в систему как
root
- Включите сервисы
rsh, rlogin и rexec на всех машинах, как показано в листинге 4. (Внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке.) Вы можете использовать для разблокировки сервисов команды #system-config-services или #ntsysv. Если вы уже хорошо разбираетесь в Unix, то можете вручную проделать необходимые изменения в соответствующих файлах.
- Создайте файл
/root/.rhosts на всех машинах, как показано в листинге 5. Включите в этот файл имена всех машин, на которых хотите запускать команды без введения пароля.
- Добавьте записи
rsh и rlogin в файл /etc/securetty, как показано в листинге 6.
- Проведя перечисленные изменения, на всех машинах перезапустите сервис
xinetd , как показано в листинге 7.
- Протестируйте вашу среду с помощью команды
#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 без введения пароля
Теперь настроим rsh для обычного пользователя, в данном случае - myuser. Предположим, что пользователь с именем myuser уже существует на всех машинах. Рассмотрим ситуацию, когда пользователь myuser может исполнять команды на удаленном компьютере без введения на нем пароля.
- Зайдите как
root.
- Включите сервисы
rsh, rlogin и rexec на всех машинах, как показано в листинге 4.
- Создайте файл
/etc/hosts.equiv, как показано в листинге 10.
- Далее перезапустите сервис
xinetd, как показано в листинге 7.
- Зайдите как
myuser, как показано в листинге 11.
- Проверьте дату в вашей среде, исполнив команду
$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, другой возможности последовательного исполнения команд в вашем окружении без введения пароля.
Ресурсы Научиться
Получить продукты и технологии
Обсудить
Об авторе  | |  | Хэриш Чаухан (Harish Chauhan) работает в IBM с 1998. Из последних семи лет в IBM он пять лет работал в India Research Lab и более полутора лет - в IBM T.J.Watson Research Center. Хэриш в настоящее время руководит Linux Center of Competency в Бангалоре, Индия. Вы можете связаться с ним по адресу hchauhan@in.ibm.com. |
Выскажите мнение об этой странице
|  |