Как прочитать пароль из переменной?

Я пытаюсь переместить мой файл в другую систему, которая находится в другом месте, с помощью этой команды:

rsync -avrz  src destination

Он работает нормально. Но мне нужно поместить эту команду в сценарий оболочки и выполнить ее следующим образом:

#! /bin/sh
rsync -avrz  srcfilelocation destination

При запуске запрашивает системный пароль назначения. Я знаю этот пароль и даю его вручную.

Теперь я решил присвоить пароль переменной среды, например pswd="destination system password". Мне нужен мой скрипт для чтения пароля из этой переменной. Как я могу написать скрипт для этого?

0
задан 10 July 2012 в 18:56

2 ответа

Вам не нужно беспокоиться о паролях, когда вы можете использовать что-то, называемое инфраструктурой открытых ключей.

Это метод использования открытых и закрытых ключей для аутентификации пользователя. Вы храните копию своего закрытого ключа, а на другом сервере есть копия вашего открытого ключа. Когда вы входите в систему, они немного общаются друг с другом, подтверждая, что открытый и закрытый ключи совпадают, поэтому вы можете войти без ввода пароля.

Это так же безопасно, как и все остальное, если вы не передаете свой личный ключ кому-либо еще!

Настроить это очень просто.

На исходном компьютере запустите 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), или кто-то может притвориться вами.

0
ответ дан 10 July 2012 в 18:56

Я рекомендую использовать ключи PKI / SSH вместо этого, но если вам нужно, вы можете установить переменную среды следующим образом:

export RSYNC_PASSWORD="yourPasswordHere"

Обратите внимание, что это имеет некоторые потенциальные последствия для безопасности и будет быть доступным в текущем сеансе.

Чтобы добавить это в сеанс пользователя по умолчанию:

echo 'export RSYNC_PASSWORD="yourPasswordHere"' >> ~/.bashrc

Кроме того, вы можете использовать файл паролей для хранения вашего пароля. Обратите внимание, что пароль указан в виде обычного текста, поэтому вам следует принять меры для его защиты.

echo "yourPasswordHere" > yourPasswordFile.txt
rsync -avrz --password-file yourPasswordFile.txt src dest
0
ответ дан 10 July 2012 в 18:56

Другие вопросы по тегам:

Похожие вопросы: