Назад | Перейти на главную страницу

SSH и sudo через псевдотерминал

Я пытаюсь преодолеть некоторые ограничения в нашей среде, чтобы написать авторизованный файл SSH для ключей ssh ​​без пароля.

Мне нужно выполнить ssh как целевую систему, а затем запустить "sudo su - , а затем обновите сервисный аккаунт authorized_keys с помощью ключа "

В конечном итоге это должно быть включено в мои скрипты ansible.

Я использую "ssh -t user@target "sudo su - service-user"- что на самом деле успешно вводит меня в оболочку для пользователя службы. Но я не могу придумать способ передать команды изменения файла с помощью приведенных выше.

Есть какие-нибудь советы или альтернативные варианты?

Примечание: мне нужно использовать "ssh -t", так как requiretty не установлен в целевых системах.

Ура!

Предполагая, что вы хотите перезаписать файл authorized_keys сервисного пользователя полностью новой версией, вы можете сделать что-то вроде этого:

cat master_authorized_keys |
    ssh -t user@target \
        "sudo -u service-user tee ~/.ssh/authorized_keys >/dev/null"

Я не знаю, если -t это действительно необходимо, но, возможно, это в вашем окружении.