_netrc/.netrc替代cURL

Her*_*ral 9 git authentication curl http .netrc

我一直在看Git和cURL,我发现了一些关于.netrc的引用,这可能有助于HTTP身份验证.问题是:.netrc是愚蠢的,因为它以纯文本格式存储密码,这对我正在开发的解决方案来说是一个很大的安全问题.

是否有替代.netrc方法?是否有可能为cURL开发"身份验证后端"?

Von*_*onC 6

2013年4月更新,git 1.8.3:

添加了一个与文件交互的新的只读凭证帮助程序(in contrib/).netrc/.authinfo.

该脚本允许您使用gpg加密的netrc文件,避免将凭据存储在纯文本文件中.

要启用此凭据帮助程序:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
Run Code Online (Sandbox Code Playgroud)

(请注意,Git会将" git-credential-"添加到帮助程序名称并在路径中查找它.)

看到一个完整的例子" 有没有办法跳过输入密码时,使用https:// github "


原始答案(2011年3月)

唯一的替代方案(除了不使用它并通过ssh)将是:

  • 加密该文件(例如,在Windows上,使用实用程序' crypt')
  • 在curl调用之前解密它
  • 然后在卷曲调用之后再次加密它

请注意,在Unix上,该文件通常处于模式600,只有您可以看到.
在Windows(_netrc)上,该文件应该在您的文件中HOMEDIR,不应该(通过Windows ACL)访问任何其他用户.
但我仍然不喜欢明文密码......

例如,这个线程经历了相同的过程(在Unix上用于gpg,但它仍然很好地说明了解决方案):

下面我已经包含了一个实现' gpg' 用法的示例脚本,可以用来加密文件的内容.它是shell脚本,但我相信你可以将这个概念改编为你的perl脚本.

我认为根据您的需要,基本想法是:

  1. 使用您的密码(和其他信息)创建纯文本文件
  2. 使用gpg并存储加密文件对其进行加密; 处理纯文本文件
  3. 在perl脚本中,将加密文件解密为纯文本文件
  4. 在脚本运行期间读取纯文本文件的内容
  5. 尽快删除纯文本文件.

这里只是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
Run Code Online (Sandbox Code Playgroud)