
Мне было интересно, сможет ли кто-нибудь помочь мне с моим сценарием.
У меня есть 2 сервера. Назовем их Сервер А и Сервер Б. На Сервере Б установлено программное обеспечение, которое я хотел бы запустить с Сервера А. Я не могу установить программное обеспечение на Сервер А.
Мне нужно разрешить пользователям запускать другое программное обеспечение на сервере A, которое затем вызовет скрипт для вызова программного обеспечения на сервере B для выполнения команды.
Поэтому я создал пользователя с именем transfer на сервере A и сервере B. Я разрешил transfer подключаться по SSH к серверу B без ввода пароля, используя ключи аутентификации.
Итак, теперь с сервера A я пытаюсь выполнить команду su as transfer, подключиться по ssh к серверу B и выполнить команду.
Это прекрасно работает как root. Однако, когда я являюсь собой или любым другим пользователем, он запрашивает у меня пароль для пользователя "transfer" на сервере B.
Вот последовательность команд:
#!/bin/bash
su transfer -c 'ssh transfer@ServerB script $1 $2'
решение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
и удаленный процесс должен выполняться с двумя переданными параметрами.