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

Передайте свой пароль к SSH-ключу через скрипт

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

Сценарий, который я пишу, не будет автоматизирован, он будет запускаться только вручную. Итак, мой сценарий запрашивает у пользователя пароль ключа SSH.

Как я могу отправить пароль к ключу SSH, когда он подключается к каждому серверу. Я стараюсь не вводить свой пароль для каждого сервера.

Я знаю, что могу использовать «ожидать», но надеюсь, что есть простой способ сделать это. Может какая-то переменная окружения?

Спасибо.

Почему бы не использовать ssh-agent для этого?
См. Дополнительную информацию на странице руководства. :)

Вот мои 2 цента!

  • У меня есть USB-накопитель, который всегда со мной (в моей физической цепочке для ключей).
  • Делаю в нем второй раздел размером 5 несущественных Мб. Этот раздел является зашифрованным разделом ext4.
  • Я храню свой закрытый ключ (без пароля) в этом зашифрованном разделе.
  • На своем компьютере я храню пароль для расшифровки этого раздела в файловом менеджере (я использую дельфин), поэтому, если я подключу USB-накопитель, я могу смонтировать зашифрованный раздел двумя щелчками мыши, а если я подключу USB-накопитель к другому компьютеру, я могу смонтируйте его, набрав пароль.
  • Опять же, на моем компьютере я сделал символическую ссылку на свои закрытые ключи, которые обычно находятся (~ / .ssh / id_rsa) туда, где они находятся при установке с USB-накопителя. Итак, после установки я могу сделать обычный ssh ​​без пароля.
  • Если я нахожусь на другом компьютере, я могу сказать ssh, где мой ключ, с флагом -i

Таким образом я могу:

  • Удобный вход в систему с моего обычного компьютера
  • Войдите в систему с одним паролем с любой Linux-машины
  • Всегда держите мои личные ключи в безопасности со мной и в зашифрованной файловой системе

Я бы использовал SSH-ключ, у которого нет пароля. Это может быть менее безопасно, но любой метод, позволяющий использовать его без присмотра, будет иметь такой же недостаток.

Самое простое решение - установить пакет sshpass и используйте его как:
sshpass -p password ssh -i keyfile.pem user@server

Ожидание - это решение, которое приходит на ум первым ...

Проверьте этот пример сценария, так как он близок к тому, что вы ищете.