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

Аутентификация SSH работает, если не запущена из сценария?

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

Насколько я могу судить, работает правильно. Например, если я сделаю следующее, все будет работать правильно:

ssh myusername@mydomain.com

Он НЕ запрашивает пароль. Это то, чего я хочу. Однако, если я напишу небольшой сценарий bash, например:

#!/bin/bash -x
ssh myusername@mydomain.com

и выполнить с помощью:

sudo ./mytestscript.sh

... он предложит мне:

myusername@mydomain.com's password:

Что я делаю не так? Мне нужно войти в систему из моего скрипта без запроса пароля!

Я предполагаю, что сценарий работает нормально, если вы запустите его без sudo. Если это так, то ваша проблема в том, что теперь ssh ищет открытый ключ в домашнем каталоге root, а не в вашем. Добавить -i к вашей команде ssh, указав путь к настроенному вами ключу, или используйте вместо него открытый ключ root.

Если вы используете ssh-agent чтобы сохранить расшифрованную версию вашего ключа, а не использовать ключ без парольной фразы, вам также необходимо отредактировать /etc/sudoers и добавить env_keep+="SSH_AUTH_SOCK SVN_SSH к Defaults так что ssh может найти ваш сокет авторизации.