Запуск bash-скрипта от пользователя из той же группы, который подключается к серверу, используя SSH-ключ от другого пользователя из той же группы

279
kgtr

Я сделал такой скрипт:

sync.sh #!/bin/bash #1st backup the file scp user-1@ip-1:/directory/file1 /backup/location/ #2nd sync/overwrite my file to that server scp /local/file2 user-1@ip-1:/directory/file1 #3rd restart service associated with that file ssh -t user-1@IP-1 << EOF sudo systemctl restart some.service EOF 

разрешение и привилегии скрипта следующие:

-rwxr-x--x. 1 user-1 group-1 ~/sync.sh 

У меня есть ssh-ключи, настроенные между user-1@localto user-1@IP-1, я настроил visudo для перезапуска службы, и все работает отлично, если я запускаю скрипт используя user-1.

Я хочу, чтобы какой - нибудь other_userв group-1иметь возможность запускать этот сценарий, но SSH-ключ не работает таким образом, он пытается создать еще один ключ. Чего мне не хватает, чтобы сделать это?

Или я должен использовать другой подход? Я видел, что я могу использовать rsync для перемещения файлов, но как насчет перезапуска службы?

Спасибо вам всем.

2

1 ответ на вопрос

0
svin83

Это не безопасный способ ведения дел.

Ключ - это то, что аутентифицирует пользователей.

  1. Дайте каждому пользователю свой собственный ключ, или каждый может просто войти под своим именем, просто используя другое имя пользователя.

  2. Измените ваш скрипт так, чтобы каждое имя пользователя выбиралось из переменной окружения.

  3. Используйте auth-agent для управления ключами. Таким образом, вам не нужно указывать пути к ключам в вашем скрипте.

  4. Много серверов и много пользователей?

    • Вероятно, вам стоит взглянуть на Kerberos и PAM.

    • Другой вариант - создать скрипт для добавления списка пользователей в файл sudoers и передать этот скрипт в оболочку суперпользователя на каждом сервере через ssh.

да, я согласен, поэтому это только внутри пользователей одной группы. В любом случае, моя единственная возможность - создать одного пользователя, который будет доступен группе. (не самое лучшее решение, если честно). если я изменяю сценарий так, чтобы каждое имя пользователя выбиралось, мне также нужно было бы изменять другие серверы и добавлять их в список sudoers каждый раз, когда в эту группу включается новый пользователь, и это кажется большой работой для простого маленького сценария. kgtr 6 лет назад 0
@kgtr Ааа. Хорошо. Обновил мой ответ с дополнительной информацией :) svin83 6 лет назад 0

Похожие вопросы