Ответ 1
Обновить Апрель 2013, git 1.8.3:
A новый помощник учетных данных только для чтения (в
contrib/
) для взаимодействия с.netrc/.authinfo
файлы добавлены.
Что script позволит вам использовать gpg-зашифрованные файлы netrc, избегая проблемы с вашими учетными данными, хранящимися в текстовом файле.
Чтобы включить этот вспомогательный помощник:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Обратите внимание, что git будет добавлять "
git-credential-
" к имени помощника и искать его в пути.)
Посмотрите полный пример в Есть ли способ пропустить ввод пароля при использовании https:// github
"
Оригинальный ответ (март 2011 г.)
Единственная альтернатива (кроме использования ее и перехода через ssh) заключается в следующем:
- зашифровать этот файл (например, в Windows с помощью утилиты
crypt
') - расшифровать его непосредственно перед вызовом curl
- затем зашифруйте его снова сразу после вызова curl
Обратите внимание, что в Unix этот файл обычно находится в режиме 600, только видимый вами.
В Windows (_netrc
) этот файл должен находиться в вашем HOMEDIR
, который не должен быть доступен (через Windows ACL) для других пользователей.
Но мне все еще не нравится пароль в виде обычного текста...
Этот поток, например, проходит один и тот же процесс (в Unix для gpg, но он по-прежнему хорошо иллюстрирует решение):
Ниже я включил образец script, реализующий использование '
gpg
', который можно использовать для шифрования содержимого файла. Это в оболочке script, однако я уверен, что вы можете адаптировать концепцию к вашему perl script.Я думаю, что для ваших нужд основная идея:
- создать текстовый файл с вашим паролем (и другой информацией)
- зашифровать его с помощью
gpg
и сохранить зашифрованный файл; удалите текстовый файл- В perl script расшифруйте зашифрованный файл в текстовом файле
- читать содержимое текстового файла во время выполнения вашего script
- как можно скорее удалите текстовый файл.
Вот только пример работы 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