С ПК1 я подключаюсь по SSH к SERVER1 , где у меня есть сценарий bash, который будет выполнять SSH и авторизоваться на SERVER2 используя SSH-ключ, защищенный паролем.
Все работает нормально, когда я вручную выполняю свой сценарий, используя ssh-agent, чтобы загрузить мой защищенный паролем ключ в память и перенаправить его на SERVER2 для аутентификации.
Но использование crontab на SERVER1 обычно дает сбой; как заставить работать следующую команду, используя защищенный паролем ключ SSH?
SERVER1 $ ssh -i ~ / .ssh / somekey.pem SERVER2
Вы не можете. Идея защиты ключей паролем заключается в том, что каждый раз, когда ключ считывается, необходимо вводить пароль. При автоматическом запуске команды нет ничего, что могло бы предоставить необходимый пароль, поэтому ssh
не получит доступ к закрытому ключу.
Это можно обойти, используя какую-то автоматизацию, которая предоставляет пароль из кода (например, используя expect
), но в этом случае вам придется где-то сохранять пароль, чтобы передать его на ssh
. То есть вы защищаете ключ паролем, но сразу предоставляете пароль, так какой в этом смысл?
Я думаю, что для автоматизированных задач лучше иметь беспарольный ключ.