Обновление Апрель 2013 г., git 1.8.3 :
A новый помощник учетных данных только для чтения (в contrib/
) добавлено взаимодействие с файлами .netrc/.authinfo
.
Этот сценарий позволит вам использовать файлы netrc с шифрованием gpg , избегая проблемы с сохранением ваших учетных данныхв текстовом файле.
Чтобы включить этот помощник по учетным данным:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Обратите внимание, что Git добавит «git-credential-
» к помощникуимя и найдите его в пути.)
См. полный пример на ". Есть ли способ пропустить ввод пароля при использовании https:// github
"
Оригинальный ответ (март 2011 г.)
Единственная альтернатива (кроме случаев, когда она не используется и не используется ssh):
- шифровать этофайл (например, в Windows с помощью утилиты '
crypt
') - расшифровывает его непосредственно перед вызовом curl
- , затем шифруетэто снова сразу после тcurl call
Обратите внимание, что в Unix этот файл обычно находится в режиме 600, видимом только вам.
В Windows (_netrc
) этот файл должен находиться в вашем HOMEDIR
, который не должен быть доступен (через Windows ACL) любым другим пользователям.
Но мне все еще не нравится пароль в виде обычного текста ...
Эта тема ,например, проходит через тот же процесс (в Unix для gpg, но он по-прежнему хорошо иллюстрирует решение):
Ниже я включил пример сценария, реализующего использование 'gpg
', которыйможет быть использован для шифрования содержимого файла.Это в сценарии оболочки, однако я уверен, что вы можете адаптировать концепцию к вашему Perl-сценарию.
Я думаю, что для ваших нужд основная идея заключается в следующем:
- создать простой текстфайл с вашим паролем (и другой информацией)
- зашифруйте его с помощью
gpg
и сохраните зашифрованный файл;утилита простого текстового файла - В сценарии perl расшифруйте зашифрованный файл в простой текстовый файл
- чтение содержимого простого текстового файла во время выполнения вашего скрипта
- удалите текстовый файл как можно скорее.
Вот лишь пример работы gpg:
#!/bin/sh
echo -n "Enter your password: "
read pass
FILE=~/mypassword
echo $pass > $FILE
gpg -c $FILE
rm -f $FILE
gpg $FILE.gpg
MYPASSWORD=`cat $FILE`
rm -f $FILE
echo $MYPASSWORD