首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颠覆HTTPS密码缓存使用GPG?

颠覆HTTPS密码缓存使用GPG?
EN

Stack Overflow用户
提问于 2018-01-22 20:49:08
回答 2查看 5.4K关注 0票数 20

我在Debian拉伸机上使用Subversion客户端(版本1.9.5 r1770682,安装于默认的包存储库),我只能访问该机器。我正在通过HTTPS连接到Subversion存储库,并且希望避免每次执行svn upsvn ci命令时都必须重新键入我的密码。我还想避免将密码以明文形式存储在磁盘上。

SVN书建议我应该能够使用GPG来缓存我的密码。尽管svn --version报告GPG身份验证证书缓存应该可用,但我在让它工作时遇到了一些困难。

关于GPG,我创建了一个GPG密钥对,将export GPG_TTY=$(tty)添加到我的.profile文件中,并验证了GPG通过加密和解密一段文本来工作。

关于Subversion,在我的.subversion/config文件中,我设置了以下内容:

代码语言:javascript
复制
$ grep '^[^#]' < .subversion/config
[auth]
password-stores = gpg-agent
[helpers]
[tunnels]
[miscellany]
[auto-props]
[working-copy]

在我的.subversion/servers文件中,我设置了以下内容:

代码语言:javascript
复制
$ grep '^[^#]' < .subversion/servers
[groups]
[global]
store-passwords = yes
store-plaintext-passwords = no

但是,当我执行svn命令时,没有缓存密码。有人对我可能做错了什么有什么建议吗?是否有人成功地使用GPG代理来缓存HTTPS密码?(也许此凭据缓存仅用于SVN+SSH连接?)

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-20 17:44:39

我终于找到了一个解决我的问题的办法,从上面罗曼的建议开始,再一次研究这个问题。Subversion客户端的find_gpg_agent_socket函数的GPG-代理认证源代码中的注释确实解释了:

$GPG_AGENT_INFO优先,如果设置,否则将使用$GNUPGHOME。 (...) 作为参考,GPG_AGENT_INFO由3:分隔字段组成。套接字的路径,gpg-代理进程的pid,以及代理对话的协议的最终版本。

通过在命令行上调用gpgconf --list-dirs agent-socket,可以很容易地找到GPG套接字的路径。$GPG_AGENT_INFO变量的其他两个部分不被Subversion客户端使用,因此不一定要设置。

因此,我在我的.profile文件末尾添加了以下代码:

代码语言:javascript
复制
export GPG_TTY=$(tty)
export GPG_AGENT_INFO=`gpgconf --list-dirs agent-socket | tr -d '\n' && echo -n ::`

这将$GPG_TTY变量设置为当前终端,$GPG_AGENT_INFO变量设置为GPG套接字,后面跟着两个冒号字符(即Subversion源代码所期望的格式)。

Subversion似乎在~/.subversion/auth中缓存存储库的身份验证设置(),因此在正确使用GPG之前,我发现有必要清除该目录:

代码语言:javascript
复制
rm -rf ~/.subversion/auth

启动新会话后,您应该能够验证$GPG_AGENT_INFO变量的设置是否正确:echo $GPG_AGENT_INFO应该输出类似于/run/user/1000/gnupg/S.gpg-agent::的内容(其中1000是当前用户的uid )。

例如,在执行Subversion命令时,您的密码将在第一次提示:

代码语言:javascript
复制
Updating '.':
Enter your Subversion password for <https://example.com:443> Subversion Repository
Password for 'username': :
At revision 123.

当随后对同一个存储库执行第二个Subversion命令时,Subversion应该使用GPG-Agent缓存的密码:

代码语言:javascript
复制
Updating '.':
At revision 123.

编辑:我的印象是,当第一次使用存储库时(即当它还没有出现在Subversion的缓存中时),密码只有在输入两次后才能被GPG正确保存。

票数 28
EN

Stack Overflow用户

发布于 2019-08-09 18:35:58

这个线程似乎给出了一个提示:用户/WS8Cr7mAovQ

我在Ubuntu上运行Xfce,我也遇到了同样的问题。显然,原因是没有设置$GPG_AGENT_INFO环境变量。手动运行/etc/X11/Xsession.d/90gpg-agent脚本(设置此变量)确实对我有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48390012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档