Я пытаюсь переместить мой файл в другую систему, которая находится в другом месте, с помощью этой команды:
rsync -avrz src destination
Он работает нормально. Но мне нужно поместить эту команду в сценарий оболочки и выполнить ее следующим образом:
#! /bin/sh
rsync -avrz srcfilelocation destination
При запуске запрашивает системный пароль назначения. Я знаю этот пароль и даю его вручную.
Теперь я решил присвоить пароль переменной среды, например pswd="destination system password"
. Мне нужен мой скрипт для чтения пароля из этой переменной. Как я могу написать скрипт для этого?
Вам не нужно беспокоиться о паролях, когда вы можете использовать что-то, называемое инфраструктурой открытых ключей.
Это метод использования открытых и закрытых ключей для аутентификации пользователя. Вы храните копию своего закрытого ключа, а на другом сервере есть копия вашего открытого ключа. Когда вы входите в систему, они немного общаются друг с другом, подтверждая, что открытый и закрытый ключи совпадают, поэтому вы можете войти без ввода пароля.
Это так же безопасно, как и все остальное, если вы не передаете свой личный ключ кому-либо еще!
Настроить это очень просто.
На исходном компьютере запустите ssh-keygen. Вы можете принять все значения по умолчанию, этого будет достаточно для этой цели. Он сгенерирует ваши приватные (id_rsa) и публичные (id_rsa.pub) ключи в вашей папке ~ / .ssh.
Теперь вы хотите получить открытый ключ на сервере, что тоже легко.
На исходном компьютере запустите ssh-copy-id username @ servername.
Это поместит копию содержимого id_rsa.pub в ~ / .ssh / authorized_keys сервера.
Теперь, если вы перейдете по ssh от источника к месту назначения, вы войдете без пароля.
Как это влияет на rsync, как я слышал, вы спрашиваете? Rsync использует ssh!
Пожалуйста, помните: НИКОГДА НЕ ДАЙТЕ СВОЙ ЧАСТНЫЙ КЛЮЧ (id_rsa), или кто-то может притвориться вами.
Я рекомендую использовать ключи PKI / SSH вместо этого, но если вам нужно, вы можете установить переменную среды следующим образом:
export RSYNC_PASSWORD="yourPasswordHere"
Обратите внимание, что это имеет некоторые потенциальные последствия для безопасности и будет быть доступным в текущем сеансе.
Чтобы добавить это в сеанс пользователя по умолчанию:
echo 'export RSYNC_PASSWORD="yourPasswordHere"' >> ~/.bashrc
Кроме того, вы можете использовать файл паролей для хранения вашего пароля. Обратите внимание, что пароль указан в виде обычного текста, поэтому вам следует принять меры для его защиты.
echo "yourPasswordHere" > yourPasswordFile.txt
rsync -avrz --password-file yourPasswordFile.txt src dest