1

Мне было интересно, если кто-то может помочь мне с моим сценарием.

У меня есть 2 сервера. Давайте назовем их Сервер A и Сервер B. На сервере B установлено программное обеспечение, которое я хотел бы запустить с Сервера A. Я не могу установить программное обеспечение на Сервер A.

Я должен позволить пользователям запускать другое программное обеспечение на сервере A, которое затем вызывает скрипт для вызова программного обеспечения на сервере B для запуска команды.

Таким образом, я создал пользователя с именем Transfer на сервере A и сервере B. Я разрешил передачу с помощью ssh на сервер B без ввода пароля с использованием ключей аутентификации.

Итак, теперь с сервера A я пытаюсь выполнить su как передачу, ssh на сервер B и запустить команду.

Это прекрасно работает как root. Однако, когда я сам или любой другой пользователь, он запрашивает у меня пароль для "переносящего" пользователя на сервере B.

Вот последовательность команд:

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 

1 ответ1

1

Создайте сценарий оболочки, который выполняет удаленную команду:

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

Протестируйте этот скрипт, запустив его как пользователь transfer :

% /home/transfer/exec-remote-sw  arg1  arg2

Теперь в качестве пользователя root создайте группу Linux (например, transfer), а затем добавьте всех пользователей, которым необходим доступ к этой функции, в группу Unix:

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

От имени пользователя root добавьте следующее в файл /etc/sudoers , запустив visudo:

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

Проверьте, войдя в систему как один из пользователей в группе передачи и запустив:

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

Чтобы упростить это для ваших пользователей, попросите их добавить следующее в свои файлы .profile (или добавьте его в /etc /profile для всех):

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

Затем пользователи могут ввести:

% svrbexec  arg1  arg2

и удаленный процесс должен выполняться с двумя переданными параметрами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .