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

ssh root @ domain - Как указать пароль?

Мне нужно написать сценарий, который выполняет резервное копирование баз данных на моем старом сервере и перемещает их на мой новый сервер. У меня около 150, поэтому нужно автоматизировать это. Я нашел это:

$ mysqldump -u username -p'password' db-name | ssh user@remote.box.com mysql -u username -p'password' db-name

Что позволит мне сделать это, однако требует, чтобы я указывал пароль каждый раз, когда я его запускаю. Как я могу заставить команду ssh принимать параметр пароля? Я попытался ssh --help но ничего не видел.

Если эта команда не может принять пароль, могу ли я сделать это по-другому?

Для этого вы хотите использовать аутентификацию на основе ключей. Здесь есть десятки вопросов по SF по этой теме, а также бесчисленное множество руководств в Интернете, которые расскажут, как это настроить.

Использование ключа аутентификации не только обеспечивает необходимую автоматизацию, но и является более безопасным средством аутентификации (при условии, что в какой-то момент вы отключите аутентификацию по паролю).

Основные шаги:

  1. Бегать ssh-keygen на сервере резервного копирования в качестве пользователя, который будет выполнять резервное копирование. Это сгенерирует пару ключей (общедоступную и частную части) и сохранит их в ~/.ssh/.
  2. Скопируйте открытый ключ на резервный сервер. В файле открытого ключа должна быть одна строка текста. Скопируйте / вставьте этот открытый ключ в ~/.ssh/authorized_keys любого пользователя, которого вы используете на этом сервере для резервного копирования.
  3. После того, как вы это сделаете, вы сможете подключиться с резервного сервера к старому серверу db без использования пароля.

Вам необходимо настроить аутентификацию на основе ключа. Используя файл закрытого ключа на вашем компьютере и соответствующий файл открытого ключа, указанный в списке авторизованных агентов на принимающей стороне, вы можете войти в систему с помощью ssh без ввода пароля.