Могу ли я ввести пароль в качестве параметра SCP, а не получать запрос на его ввод?
Как сохранить пароль при копировании файла с помощью SCP? Этот вопрос похож, но ответы касаются полного отказа от пароля SSH.
решение1
Есть несколько вариантов:
- используя sshpass
Выполните команду:
sshpass -p 'password' scp filename user@host:
Установить sshpass:
- Убунту:
sudo apt install sshpass
sshpass - неинтерактивный поставщик паролей ssh
sshpass — это утилита, предназначенная для запуска SSH с использованием режима, называемого «интерактивной клавиатурной» аутентификацией по паролю, но в неинтерактивном режиме.
ssh использует прямой доступ к TTY, чтобы убедиться, что пароль действительно выдан пользователем интерактивной клавиатуры. Sshpass запускает ssh в выделенном tty, обманывая его, думая, что он получает пароль от интерактивного пользователя.
Команда для запуска указывается после собственных опций sshpass. Обычно это будет "ssh" с аргументами, но это может быть и любая другая команда. Однако запрос пароля, используемый ssh, в настоящее время жестко закодирован в sshpass.
- С использованиеможидать(или другой сценарий)
написать скрипт, который будет вводить пароль, как только он определит запрос пароля SSH
- Использование ssh с парой ключей (вместо использования пароля)
ИМХО - это самый безопасный способ, и он не требует использования паролей.
Использование открытого/закрытого ключа для выполнения ssh
операции scp
без ввода пароля.
Более подробную информацию можно найти вэтот ответ
Подробную информацию можно найтиздесь
решение2
Ответ на вопрос, как это сделать, уже есть, поэтому я сосредоточусь на том, почему этого не нужно делать.
- Если вы передадите пароль в командной строке, то его сможет перехватить локальный пользователь, использующий
ps
или любой другой обработчик списков процессов. - Создать пароли, которые трудно угадать и легко запомнить, сложно, поэтому не используйте пароли с ssh.
Вместо этого используйте открытый/закрытый ключ и используйте ключевой агент для временного запоминания вашего ключа.