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

Использование защищенных паролем ключей SSH для автоматических сценариев на удаленном сервере

С ПК1 я SSH в СЕРВЕР1 где у меня есть сценарий bash, который будет использовать SSH и авторизоваться для СЕРВЕР2 используя SSH-ключ, защищенный паролем.

Все работает нормально, когда я вручную выполняю свой скрипт, используя ssh-agent, чтобы загрузить свой защищенный паролем ключ в память и перенаправить его в СЕРВЕР2 для авт.

Но использование crontab на SERVER1 обычно дает сбой; как я могу заставить работать следующую команду, используя SSH-ключ, защищенный паролем?

SERVER1$ ssh -i ~/.ssh/somekey.pem SERVER2

Вы не можете. Идея защиты ключей паролем состоит в том, что каждый раз, когда ключ читается, пароль необходимо вводить. При автоматическом запуске команды нет ничего, что могло бы предоставить необходимый пароль, поэтому ssh не получит доступа к закрытому ключу.

Это можно обойти, используя какую-то автоматизацию, которая предоставляет пароль из кода (используя expect например), но в этом случае вам придется где-то сохранить пароль, чтобы передать его в ssh. Таким образом, вы защищаете ключ паролем, но сразу же предоставляете пароль, так в чем смысл?

Думаю, для автоматизированных задач лучше иметь ключ без пароля.