Правильный способ отправки команд SSH нескольким клиентам с помощью sudo?

, я создал очень простой сценарий оболочки для отправки команд SSH на несколько хостов. Прямо сейчас я скопировал свой ssh ​​id, поэтому мне не нужно использовать пароль для входа на серверы. Но если я хочу для примера выполнить apt-get update , тогда мне нужно войти в систему как root, и я уверен, что это не лучший способ сделать это? Итак, вопрос в том, как лучше всего отправить несколько команд ssh нескольким клиентам? s с правами sudo?

#!/bin/bash
# Hosts
hostarray=(
        "host1"
        "host2"
        "host3"
        )

for i in "${hostarray[@]}"; do
    ssh "$i" "command here"
done
0
задан 11 February 2016 в 23:15
3 ответа

Как было предложено выше, Ansible может справиться с этим более элегантно с помощью параметров «--become --become-method = sudo --ask-стать-пароль». Однако вы можете, например, поместить это в файл с именем /etc/sudoers.d/puppet (при условии, что ваш удаленный пользователь называется puppet - присвоение имени необязательно, но это помогает мне не усложнять задачу):

Defaults:puppet    !requiretty

puppet ALL=(ALL) NOPASSWD: ALL

Это удаляет необходимость ввода пароля и необходимость в tty.

2
ответ дан 4 December 2019 в 12:24

Вы получаете ошибку tty, потому что sudoers настроен на использование TTY. https://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password

Вы можете попробовать запустить ssh с опцией -tt , которая принудительно выделяет tty. https://www.freebsd.org/cgi/man.cgi?query=ssh&sektion=1

ssh -tt user@host
1
ответ дан 4 December 2019 в 12:24

вы также можете скопировать свой открытый ключ в ~ root / .ssh / authorized_keys на каждом удаленном хосте, а затем

ssh root@"$i" "command"

Если безопасность не является проблемой, и это закрытая среда, это может облегчить вашу жизнь. В противном случае я не рекомендую это и бы установил значения по умолчанию в sudo на not requiretty или, возможно, принудительное выделение tty, как упомянуто выше с

ssh -tt "$i" "command"
0
ответ дан 4 December 2019 в 12:24

Теги

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