Возможный дубликат:
Подключитесь через SSH и введите пароль автоматически, без использования открытого ключа
У меня есть сценарий bash, который делает дамп БД, а затем копирует файл с одного сервера на другой, но всегда запрашивает пароль перед подключением.
scp file.tar.gz root@xxx.xxx.xxx.194:/backup
Есть ли способ передать пароль прямо в скрипт?
Вместо использования root создайте учетную запись только для этого задания. Используйте открытые ключи без парольной фразы вместо паролей.
scp -i /home/backupuser/.ssh/id_rsa backupuser@xxx.xxx.xxx.194:/backup
Используя специальную учетную запись для резервного копирования в целевой системе, вы не раскрываете свой пароль root.
scp
использует SSH
для туннелирования на удаленный сервер и передачи файлов. SSH
может аутентифицировать пользователей с помощью пароля, ключа SSH
или обоих (рекомендуется).
Чтобы передавать файлы без пароля, создайте SSH
] ключ для пользователя, которого вы собираетесь использовать (root - это , но не , используйте вместо этого непривилегированного пользователя и получите задание на целевом сервере как root для выполнения привилегированного действия).
Затем вам необходимо настроить демон целевой системы SSH
для приема ключевых соединений SSH
(также в ссылке выше).
Имейте в виду, что скомпрометирован SSH
ключи без пароля - то же самое, что скомпрометированные пароли - любой может войти. Для реальных пользователей это ' Лучше удвоить безопасность и потребовать ключ и пароль.
Лучше настроить ssh для использования аутентификации на основе ключей, чем пытаться выяснить, как отправить текст процессу входа в систему с чем-то вроде expect
.
Взгляните на:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
Итак, в основном запустите ssh-keygen -t dsa
на машине, которая будет запустите свой скрипт. Когда он попросит вас ввести кодовую фразу, нажмите ENTER, чтобы принять пробел. Вы получите два файла. Если вы следовали предложениям по умолчанию, файлы будут ~ / .ssh / id_dsa и ~ / .ssh / id_dsa.pub. Первый - это закрытый ключ. Второй - открытый ключ.
Скопируйте открытый ключ на второй сервер, используя ssh-copy-id user @ server2
. Это добавит открытый ключ в файл authorized_keys пользователя на сервере 2.
Теперь вы должны иметь возможность запускать ssh с первого компьютера и входить в систему без пароля.
Для копирования файлов используются scp или rsync. хорошо. Это зависит от того, что вы делаете. rsync по умолчанию будет использовать ssh, поэтому будет использоваться только что настроенная вами аутентификация на основе ключей.
Вы не должны использовать ssh-ключи без пароля по соображениям безопасности.
Инструмент связка ключей
может помочь вам повторно использовать ssh -agent и запустите rsync поверх ssh в сценариях без запроса паролей.
Чтобы установить его на машине Ubuntu, просто выполните следующую команду.
sudo apt-get install keychain
Посетите страницу руководства для связки ключей , чтобы получить дополнительную информацию о том, как ее использовать.
pscp позволяет передавать пароль напрямую с помощью аргумента -pw. В качестве альтернативы, и это лучшая идея, используйте ssh-агент и настройте вход на основе ключа - это более безопасно. Здесь есть инструкция по настройке ssh для использования входа в систему на основе ключа
. Вы можете использовать команду yes , чтобы отправить программе «да».