使用git send-mail和谷歌2因素身份验证

时间:2014-04-15 23:57:43

标签: git gmail two-factor-authentication

我想使用git send-mail向上游提交补丁,但我的Gmail帐户正在使用双因素身份验证。谷歌为这类事情提供了应用程序专用密码,但我的问题是哪里有存储此密码的安全位置,以便与git send-mail一起使用?

4 个答案:

答案 0 :(得分:4)

原来git有a credential store。 Linux,OS X和Windows都有凭证助手,可以从操作系统的密钥环收集凭据。 This answer有几个例子。

修改

如果您希望将修补程序保存到草稿文件夹中,以便在发送之前进行查看(或者只是让Gmail更好地跟踪线索),您可以执行以下操作:

git config --global imap.host imaps://imap.gmail.com
git config --global imap.user your.email@gmail.com
git config --global imap.port 993
git config --global imap.sslverify false
git config --global imap.folder [Gmail]/Drafts
git format-patch --stdout | git imap-send

请注意,在撰写本文时,git不支持将git-credential用于git-imap-send。我写了一个补丁来解决这个问题。它正在等待合并到上游,但如果你不耐烦,它可用here

答案 1 :(得分:1)

您可以使用普通的Git配置来存储密码,如下所示:

git config --global sendemail.smtpencryption tls
git config --global sendemail.smtpserver mail.example.com
git config --global sendemail.smtpuser fred@example.com
git config --global sendemail.smtpserverport 587
git config --global sendemail.smtppass smbumqjiurmqrywm

当然,这将以纯文本格式存储密码。您应确保其他人无法读取您的〜/ .gitconfig文件。

您也可以将密码存储在加密文件中并使用它。您仍然需要记住并输入加密密码,但至少您可以选择该密码。像gpg2这样的东西应该可以解决问题。

当然,最后,唯一存储密码的真正安全的地方就在你的耳边。

Source

答案 2 :(得分:1)

Git 2.0.x / 2.1(2014年第3季度)将为 git credential 支持 git imap-send
请参阅commit 791643a中的Dan Albert (DanAlbert),现已合并到git/git master分支:

imap-send:使用git-credential

  

git-imap-send直接提示输入密码而不是使用git-credential。另一方面,git-send-email支持git-credential

     

对于使用双因素身份验证的用户而言,这是一项必要的改进,因为他们不应该记住他们所有的应用专用密码。


2017年更新,对于Git 2.14.x / 2.15(2017年第4季度),git imap-send仍将继续发展。

commit dbba42b点击commit 19079b3commit 690307fcommit 200bc38Nicolas Morey-Chaisemartin (nmorey)(2017年9月14日){。}}。 Junio C Hamano -- gitster --合并于commit b67f154,2017年9月25日)

  

" git imap-send"我们有自己的协议实现,也有   可以在libCurl协议支持下使用更新的imap   更新后者,以便它可以使用凭证子系统,然后   使它成为默认选项,以便我们最终可以弃用并删除前者。

答案 3 :(得分:1)

对于那些不想为此使用Gmail密码的人,我写了一个plug-in for git-send-email,它使用OAuth 2授权。它只要求最低的权限(代表您发送电子邮件),并像Git Credential Manager一样将OAuth令牌数据存储在Windows凭据存储中。

更新:Google有一个plug-in,其工作方式类似,但将凭据保存在文件中,并使用了较少的受限制令牌(所有Gmail和仅代表您发送电子邮件)。不过它可以在Linux上运行。