Я считаю, что лучший способ избежать паролей - это использовать сертификаты с SSH / rsync. Это мой звонок в rsync:
rsync -azvr --stats --rsh="ssh -p${ssh port} -i /path/to/certificate/key" ${source} ${destination}
важная часть:
--rsh="ssh -p${ssh port} -i /path/to/certificate/key"
-i указывает сертификат в качестве удостоверения личности, чтобы подтвердить, кто вы, и автоматически войти в систему.
этот сертификат генерируется по телефону:
ssh-keygen -t rsa -b 2048 -f key
где вы выполняете резервное копирование и затем помещаете ключ в определенное место в пункте назначения
запустите этот скрипт (для этого требуется скрипт ниже), где вы будете хранить свой сертификат с параметром ip сервера и номером порта для ssh
(например ./setup.sh //192.168.1.22 23024)
echo "generate key"
ssh-keygen -t rsa -b 2048 -f key
echo "push key to server"
rsync -avz --rsh="ssh -p$2" key.pub $1:~/.ssh/key.pub
echo "put key in authorized_keys on server"
ssh -p$2 $1 'bash -s' < ../remote.sh
вам понадобится этот скрипт, хранящийся в том же месте, с именем 'remote.sh'
#!/bin/bash
mkdir .ssh
cd .ssh
cat key.pub > authorized_keys
exit
сценарию потребуется один раз ввести имя пользователя и пароль, но с тех пор rsync будет использовать сертификат в качестве ваших учетных данных.
ключ - это личный сертификат, который хранится на вашем компьютере и используется для подписи исходящих данных
key.pub является общедоступным сертификатом и хранится на любом компьютере, который используется для проверки подписанных данных и подтверждения их получения от вас.
.ssh - это специальная папка в вашем домашнем каталоге для хранения сертификатов для использования с ssh ..
Надеюсь, это поможет.