Мне было интересно, если кто-то может помочь мне с моим сценарием.
У меня есть 2 сервера. Давайте назовем их сервером A и сервером B. На сервере B установлено программное обеспечение, которое я хотел бы запустить с сервера A. Я не могу установить программное обеспечение на сервере A.
Я должен позволить пользователям запускать другое программное обеспечение на сервере A, которое затем вызывает скрипт для вызова программного обеспечения на сервере B для запуска команды.
Таким образом, я создал пользователя с именем Transfer на сервере A и сервере B. Я позволил Transfer иметь возможность ssh на сервер B без ввода пароля с использованием ключей аутентификации.
Итак, теперь с сервера A я пытаюсь выполнить su в качестве передачи, ssh на сервер B и выполнить команду.
Это прекрасно работает как root. Однако, когда я сам или любой другой пользователь, он запрашивает у меня пароль для «переносящего» пользователя на сервере B.
Вот последовательность команд:
#!/bin/bash
su transfer -c 'ssh transfer@ServerB script $1 $2'
su
от nonroot требуется пароль нового пользователя где это работает , что А, потому что Unix был спроектирован как многопользовательская система. Пытатьсяsu transfer -c 'echo hi'
чтобы увидеть это. Ты можешь использоватьsudo
чтобы позволить выбранным пользователям запускать этот конкретныйssh
на А, или вы можете просто дать выбранным пользователям на А приватный ключ, который позволяет им использоватьssh
чтобы получить доступ В какtransfer
безtransfer
пользователь на совсем.Ответы:
Создайте сценарий оболочки, который выполняет удаленную команду:
Протестируйте этот скрипт, запустив его как
transfer
пользователь:Теперь в качестве пользователя root создайте группу Linux (например,
transfer
) затем добавьте всех пользователей, которым необходим доступ к этой функции, в группу Unix:От имени пользователя root добавьте следующее к
/etc/sudoers
файл, запустивvisudo
:Протестируйте, войдя в систему как один из пользователей в группе передачи и запустив:
Чтобы упростить это для ваших пользователей, попросите их добавить следующее в свои файлы .profile (или добавьте его в / etc / profile для всех):
Затем пользователи могут ввести:
и удаленный процесс должен выполняться с двумя переданными параметрами.
источник