Мне нужно написать сценарий, который выполняет резервное копирование баз данных на моем старом сервере и перемещает их на мой новый сервер. У меня около 150, поэтому нужно автоматизировать это. Я нашел это:
$ mysqldump -u username -p'password' db-name | ssh user@remote.box.com mysql -u username -p'password' db-name
Что позволит мне сделать это, однако требует, чтобы я указывал пароль каждый раз, когда я его запускаю. Как я могу заставить команду ssh принимать параметр пароля? Я попытался ssh --help
но ничего не видел.
Если эта команда не может принять пароль, могу ли я сделать это по-другому?
Для этого вы хотите использовать аутентификацию на основе ключей. Здесь есть десятки вопросов по SF по этой теме, а также бесчисленное множество руководств в Интернете, которые расскажут, как это настроить.
Использование ключа аутентификации не только обеспечивает необходимую автоматизацию, но и является более безопасным средством аутентификации (при условии, что в какой-то момент вы отключите аутентификацию по паролю).
Основные шаги:
ssh-keygen
на сервере резервного копирования в качестве пользователя, который будет выполнять резервное копирование. Это сгенерирует пару ключей (общедоступную и частную части) и сохранит их в ~/.ssh/
.~/.ssh/authorized_keys
любого пользователя, которого вы используете на этом сервере для резервного копирования.Вам необходимо настроить аутентификацию на основе ключа. Используя файл закрытого ключа на вашем компьютере и соответствующий файл открытого ключа, указанный в списке авторизованных агентов на принимающей стороне, вы можете войти в систему с помощью ssh без ввода пароля.