Какой самый простой способ заставить системный скрипт (работающий от имени root) выполнять удаленные команды через ssh?

Я написал несколько сценариев, которые выполняют команды удаленно через ssh, и они прекрасно работают, когда я запускаю их как сам, так как я настроил ssh-agent и ключи для входа без пароля. Я хотел бы позвонить, когда мой ноутбук подключается и отключается. Я успешно запускаю произвольные сценарии при стыковке / отстыковке, но поскольку сценарии событий ACPI запускаются от имени пользователя root, попытка запустить мой сценарий ssh завершается неудачно во время аутентификации.

Я попытался использовать sudo с флагами -u и -i для имитации запуска скрипта от имени моего пользователя, например:

sudo -u redmoskito -i /home/redmoskito/bin/remote_command

который успешно находит мой закрытый ключ и пытается использовать его, но учетные данные ssh-agent все еще отсутствуют, поэтому мне все еще нужна моя фраза-пароль.

2 ответа2

1

Ничего плохого в части sudo. Чтобы подобрать существующего агента ssh, посмотрите эти ответы: Совместное использование одного и того же `ssh-agent` в нескольких сеансах входа в систему

0

Вы пытались использовать su вместо sudo?

su - redmoskito -c "/home/redmoskito/bin/remote_command"

ИЛИ ЖЕ

отредактируйте ваш скрипт для использования: ssh -l redmoskito (host) (команда) (при условии, что redmoskito - это то же имя пользователя на удаленном компьютере) Затем в домашнем каталоге redmoskito на удаленном компьютере $ HOME/.ssh/authorized_keys поместите содержимое local корневой каталог компьютера $ HOME.ssh/id_rsa.pub после создания пустой парольной фразы в качестве root на локальном компьютере с помощью ssh-keygen -t rsa Убедитесь, что $ HOME или $ HOME/.ssh или любой из файлов в $ HOME/.ssh не являются группа или другой доступный для записи, если ваш файл sshd_config имеет StrictModes = yes

Если ничего из этого не работает, дайте мне знать. Я продублирую проблему на моих машинах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .