Я создаю небольшой скрипт резервного копирования, используя sshfs
:
sshfs backup_user@target_ip:/home /mnt/backup
Есть ли способ включить пароль в эту команду?
Или есть другое решение для передачи файлов, в котором может быть указан пароль для входа, отличный от FTP / SFTP?
Ответы:
-o password_stdin
похоже не работает на всех системах, например на freeBSD. и т.д.Вы также можете использовать
expect
Интерпретатор, он должен работать с sshfs и делать свое дело.Другое решение
sshpass
, например, скажем, что вы создаете резервную копию каталога / var / wwwРезервное копирование:
загрузка файла резервной копии на сервер резервного копирования
Таким образом, он будет загружать каталог с сегодняшним резервным копированием.
Но все же, как было сказано выше, лучший (безопасный и простой) способ - использовать пару ключей ssh
. Единственное неудобство заключается в том, что вам придется проходить процесс генерации ключа один раз на каждом сервере. вам нужно создать пару, но это лучше, чем хранить пароль в текстовом формате на всех серверах, для которых вы хотите создать резервную копию :),
правильно создать пару ключей
На локальном сервере
На удаленном сервере
Загрузка сгенерированных открытых ключей на удаленный сервер
Установить разрешения на удаленном сервере
Авторизоваться
Включение протокола SSH v2
включение авторизации с открытым ключом в sshd
Если StrictModes установлен в yes в / etc / ssh / sshd_config, тогда
источник
Согласно руководству, существует опция,
-o password_stdin
которая может позволить считывать пароль из стандартного ввода, что, вероятно, может быть перенаправлением. Я никогда не использовал это, поэтому я размышляю.Тем не менее, я настоятельно рекомендую против такого решения, которое по своей сути небезопасно.
ssh
очень хорошо работает с системой закрытых / открытых ключей. Это просто и безопасно. Нет необходимости вводить пароль или писать его в открытом виде в сценарии оболочки. Просто нажмите ваш открытый ключ на сервере, и вы можете подключиться немедленно.источник
printf "my_password\n" | sshfs username@hostname:/remote_fs $HOME/local_dir
-o password_stdin
возможности.printf "my_password\n" | sshfs -o password_stdin user@hostname:/ $HOME/local_dir
PS Я нахожусь на Debian Buster PPS. Это работает, но запрашивает пароль:sshfs -o password_stdin user@hostname:/ $HOME/local_dir
Конвейеру
"sshfs password"
с<<<
к-o password_stdin
работам на баш:источник
Опция "-o password_stdin" - это то, что позволяет вам передать ваш пароль.
Тем не менее, ключи являются лучшим вариантом, если только ваш поставщик услуг не разрешает вам использовать их для sftp. (Это одна из заметных ошибок WP Engine.)
источник
Сценарий монтирования:
Отсоединение:
источник
Следует иметь в виду, что если вы используете эту
-o password_stdin
опцию, она может не работать, потому что sshfs спросит, подключаться к хосту или нет (если вы подключаетесь к нему в первый раз и он не добавлен) к известному файлу hosts еще). Если вы запускаете его в пакете, вы никогда не увидите sshfs, спрашивающего. Обходные пути, чтобы избежать этого:-o StrictHostKeyChecking=no
опцию в sshfs илиисточник
Автоматический скрипт для соединения sftp с sshfs
источник