-o password_stdin
не працюють на всіх системах, наприклад, freeBSD. і т.д.
Ви можете також використовувати expect
перекладач, він повинен працювати з SSHFS і повинен зробити трюк.
Іншим рішенням може бути sshpass
, наприклад, скажімо, що ви створюєте резервну копію каталогу / var / www
Резервне копіювання:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
завантаження резервного файлу на сервер резервного копіювання
sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name
Таким чином, він буде завантажувати каталог із сьогоднішнім резервним копієм.
Але все-таки, як було сказано вище, найкращим (безпечним та простим) способом було б використання пари ключів ssh
. Єдиною незручністю було б те, що вам доведеться один раз пройти процес генерації ключів на кожному сервері вам потрібно з’єднати пару, але краще, ніж зберігати пароль у простому текстовому форматі на всіх серверах, на яких потрібно створити резервну копію :),
Створюючи ключову пару належним чином
На локальному сервері
ssh-keygen -t rsa
На віддаленому сервері
ssh root@remote_servers_ip "mkdir -p .ssh"
Завантаження створених загальнодоступних ключів на віддалений сервер
cat ~/.ssh/id_rsa.pub | ssh root@remote_servers_ip "cat >> ~/.ssh/authorized_keys"
Встановити дозволи на віддаленому сервері
ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
Вхід
ssh root@remote_servers_ip
Увімкнення протоколу SSH v2
"" Протокол 2 "в / etc / ssh / sshd_config
включення авторизації відкритого ключа в sshd
коментар "PubkeyAuthentication yes" у / etc / ssh / sshd_config
Якщо для StrictModes встановлено значення "Так" в / etc / ssh / sshd_config, тоді
restorecon -Rv ~/.ssh