У меня есть sh-скрипт для бэкапа
scp /mybackupdir/* backupuser@backupserver:/backup
Есть ли простой способ добавить кодовую фразу в scp? Или мне нужно проверить, запущен ли ssh-agent, а если нет, запустить его и добавить ключ?
Вы не можете указать парольную фразу для scp с аргументом.
Однако вы можете использовать аутентификацию по ключу: ssh-keygen сгенерирует пару ключей rsa для аутентификации ssh-copy-id скопирует ваш открытый ключ на другой хост.
если вы не можете или не хотите использовать аутентификацию по ключам, вы можете написать сценарий ожидания и указать кодовую фразу из этого сценария. Это не самый безопасный способ реализовать это!
Для начала разберемся с некоторыми фактоидами, которые легко запутать:
В контексте SSH, когда люди используют термин ...
... но, конечно, это всего лишь условность и большой источник путаницы.
Тем не менее, я пытаюсь ответить на ваш вопрос:
Если вы имеете в виду аутентификацию SSH на основе пароля:
Если вы имеете в виду аутентификацию с открытым ключом с файлом секретного ключа, зашифрованным с помощью парольной фразы:
Вы должны прочитать этот пост:
3 шага для выполнения входа по SSH без пароля с помощью ssh-keygen
и вы можете изменить свой сценарий на это:
rsync --rsh='ssh -p(Type your SSH port)' -av /yourBackupDir backupUser@backupserver.example.com:/backup | mail -s "backup on `hostname`" your@email.account
Для аутентификации по публичному ключу вам не нужен ssh-agent. Вы можете просто передать требуемый ключ в ssh или scp с -i
аргумент командной строки.
Если вы не хотите, чтобы кодовая фраза запрашивалась, введите пустую парольную фразу (это не пароль ни исходной, ни удаленной системы) при создании пары ключей (rsa) (общедоступный-частный) с помощью ssh-keygen.