Я предполагаю, что самая простая опция состоит в том, чтобы установить Ваше задание крона в более раннее время, сказать 5 минут с этого времени и видеть, работало ли задание. Дополнительно это - хорошая форма, чтобы выполнить Ваш крон, входят в датированный файл. Тем путем Вы видите № 1, который это действительно выполняло, и № 2, который это выполнило правильно.
Удостоверьтесь, что Ваше системное время корректно также.
Эта переменная среды пароля, кажется, только используется при использовании rsync протокола:
rsync rsync://username@1.2.3.4:/abc /def
Чтобы это работало, необходимо выполнить rsync как демон также (--daemon
опция), который часто делается с помощью inetd.conf
.
При использовании этого протокола, abc
должен соответствовать цели, определенной в /etc/rsyncd.conf
. Имя пользователя должно присутствовать в a auth users
строка для этой цели и файл паролей должны быть указаны с secrets file
опция.
Именно этот секретный файл содержит отображения между именами пользователя и паролями в следующем формате:
username:password
И именно этот пароль можно указать использование переменной среды RSYNC_PASSWORD.
Если rsync
демон не работает на целевой машине, и Вы не заботитесь о представлении паролей всем на локальной машине (Почему кто-то не должен использовать пароли в командной строке?), можно использовать sshpass
:
sshpass -p "password" rsync root@1.2.3.4:/abc /def
Отметьте пространство в начале команды, в bash
окружите это остановит команду (и пароль) от того, чтобы быть сохраненным в истории. Я не рекомендую использовать RSYNC_PASSWORD
переменная, если абсолютно необходимый (согласно предыдущему редактированию к этому ответу), я не рекомендую подавить устройство хранения данных истории или по крайней мере очистить историю после. Кроме того, можно использовать tput reset
очистить Вашу терминальную историю.
sshpass -p $(cat passFile) ..
скрыть ясную передачу в истории удара и chmod 400 на passFile для обеспечения его
– Kresimir Pendic
02.01.2017, 18:27
Вы можете использовать стандартные идентификаторы SSH для входа в PhancedBless. Это обрабатывается по умолчанию, если у вас ~ / .ssh / id_rsa
или тому подобное, но вы также можете жестко определить свой собственный путь к закрытому ключу авторизованной Keypair.
Это позволяет получать насыщение / сценарию без воздействия паролей, и открытый ключ можно удалить с целевого сервера, если закрытый ключ всегда скомпрометирован.
rsync -e"ssh -i /path/to/privateKey" -avR $sourcedir ${ruser}@${rhost}:~/${rdir}/
Вы также можете добавить аргументы, такие как -O STRICHOSTKEYKECKING = NO -O UserknownHostsfile = / dev / null
, чтобы не принудительно привести к проверке клавиши удаленного хоста. ! Осторожно - это открывает человека в средних атаках и является общей плохой практикой!
Очень полезно для сценариев - это использование - пароль- Файл
Параметр командной строки.
CHMOD 600 rsync_pass
rsync $ args - password-file = rsync_pass user @ rsynchost :: / share localdirectory
Это может быть использовано для сценариев и позволяет быть более безопасным, что просто экспортировать пароль в системную переменную.
Я написал свой сценарий, вдохновленный комментариями в этом посте, поэтому я опубликую его здесь как еще один источник вдохновения. Моими требованиями были отсутствие rsyncd на удаленном компьютере, вход по паролю, отсутствие раскрытия пароля в истории или в командной строке. На самом деле это не очень сложно:
#!/bin/bash
HOST=mymachine.mydomain.com
USER=fms
LOCAL=/home/fms/Progetti/MyProject/src
read -s -p "Password for $USER@$HOST: " SSHPASS
echo
sshpass -e rsync -i -r --checksum --delete --chown=nginx:nginx -e "ssh -o PreferredAuthentications=password" $LOCAL/lavori_senato $USER@$HOST:/var/www/drupal/test/web/modules/custom
Мне нужно было изменить конфигурацию моего ssh по умолчанию, чтобы он не пытался сначала использовать открытый ключ -. echo
после read
— это всего лишь прикосновение к форматированию, поскольку при использовании -s
даже конец строки не печатается, а вывод rsync перекрывается с запросом пароля.
Для протокола rsyncd используйте замену процесса для параметра--password-file=FILE
rsync --password-file=<(echo "1233456") root@1.2.3.4::abc /def
Похоже, это вечная тема. Поэтому я хотел бы предложить решение, которое лучше всего сработало для меня на машине с Ubuntu 20.04.
Моя цель состояла в том, чтобы создать резервную копию на облачном диске 1blu, который не позволял использовать ключ SSH.
Сначала я создал файл ~/.rsync_pass
и записал в него пароль пользователя SSH.
Затем я использовал команду sshpass
с параметром -f
, чтобы прочитать пароль из этого файла и передать его rsync.
sshpass -f ~/.rsync_pass rsync -av /var/www/folder/ user@example.com:/backup