将密码存储在TortoiseHg中


200

有没有一种方法可以配置TortoiseHg来存储我的密码?

我有一个托管在Google Code上的项目,可以使用TortoiseHg访问。每当我想将更改推送到Google Code TortoiseHg时,都会提示我输入用户名和密码。Google Code要求我使用自动生成的密码,每次都需要重复查找。

Answers:


70

安全警告

尽管从2017年9月15日开始接受此答案,但不是推荐的解决方案。永远不要以纯文本形式存储密码。请改用mercurial_keyring扩展名。在这里看到另一个答案


您可以将推送URL更改为https:// username:password@hostname.com/repo

Google CodeMercurial的常见问题解答对此进行了说明。

编辑:Mercurial FAQ解释了另一种方法:

使用Mercurial 1.3,您还可以将auth部分添加到hgrc文件中:
[认证]
example.prefix = https://hg.example.net/
example.username = foo
example.password =条

51
这是一个不好的答案!您绝不应该将明文密码存储在任何文件中……!使用mercurial_keyring的另一个选项(获得更多票)是唯一正确的选择!
Lars Corneliussen

6
+1。考虑到hg push它是非破坏性的(您总是可以有hg strip不需要的变更集),因此推送到远程存储库几乎不是一个特权较高的操作。因此,只要知道安全隐患,纯文本密码存储通常就足够了。
索伦·勒夫堡(SørenLøvborg)2012年

4
问题不在于某人可以不可挽回地破坏存储库。问题是:(1)人们重复使用密码,因此一旦有人设法访问此文本文件,他们将能够访问无关的资源;(2)任意黑客可能会潜入源代码...(3)代码可能是秘密的(并非所有开发都是开源的),并且被盗并不总是很有趣。
2012年

6
@max 1)从理论上讲可能是正确的,但OP特别声明他正在使用自动生成的密码2)版本控制阻止了此操作,您可以看到所有已签入的更改,这怎么可能是问题?3)如果有人可以访问您计算机上存储的纯文本密码,那么他们也可以访问您的代码。这里的密码没有意义,因为它们可以将您的代码转储到加密狗上。
goldenratio 2012年

4
@LarsCorneliussen这不是一个不好的答案。并非每个用例都需要该级别的安全性。密钥环扩展名是一个选项,正是如此。
Cypher 2014年

265

现有的两个答案都建议您以纯文本格式存储未加密的用户名和密码,这是不可以的。

您应该改用Keyring扩展名,因为它是专为安全保存身份验证密码而设计的。它已经与TortoiseHg捆绑在一起,因此您只需在mercurial.ini文件中写入以下内容即可激活它:

[extensions]
mercurial_keyring=

您还必须通过编辑特定于存储库的.hg \ hgrc文件,将用户名与推送网址相关联,如下例所示:

[paths]
default = https://<your_username>@bitbucket.org/tortoisehg/thg

有关将用户名与url关联的更多详细信息,请参阅“ 密钥环扩展”页面的“ 存储库配置(SMTP)”部分。


2
我只是尝试了此解决方案,它在Windows 7下效果很好。谢谢!
mateuscb 2011年

对我来说效果很好-但我认为您还需要在[auth]标题下添加用户名,或修改用户名@host之类的存储库路径(根据上面的Keyring链接)
Tom Carver

1
好的答案,一定要走。
vobject

如果您使用Web代理,如何保存用户名和密码呢?
赛斯2012年

3
正确的方法是使用auth部分配置用户名。您的回购路径中不应包含身份验证信息,例如[auth] \n bitbucket.org.prefix = bitbucket.org \n bitbucket.org.username = schlamar
schlamar 2013年

150

三步,观看屏幕截图注意:此密码以纯文本格式存储。

在此处输入图片说明


37
看起来这也以明文形式存储密码-如果您启用了密钥环扩展名,则密码字段将被禁用
Vlad Iliescu 2012年

5
仅在使用https协议时有效,当设置为http时,挂锁将消失。
Despertar

接受旧的答案很烂,这应该是绿色的厚脸皮!
威廉·T·马拉德


2

只需修改本地存储库目录中的hgrc文件即可,.hg如下所示:

[paths]
default = https://name:password@yourproj.googlecode.com/hg/

其中name是您的Google Code登录名,没有gmail / googlemail位,例如'fredb'(不是fredb@gmail.com),password是Google生成的密码,而yourproj是您的GC项目的名称。所以像这样:

default = https://fred:xyz123@fredproj.googlecode.com/hg/

11
切勿以纯文本形式存储密码。决不!使用mercurial_keyring-TortoiseHG然后只要求输入一次密码。
拉尔斯·

1
永不说永不:)是的,SSH密钥比Keyring更可取,Keyring优于纯文本,但确实存在不同的情况。PS赞成“ keyring”答案和此答案。
Alex Shesterov '16

0

这对我有用SSH。我知道密码是纯文本形式的,但这在这个项目中不是问题。您必须更改myUser和MyOPas的凭据以及路径:TortoisePlink.exe。编辑mercurial.ini

[reviewboard]
password = myPass
[ui]
username = myUser
ssh = "C:\Program Files\TortoiseHg\lib\TortoisePlink.exe" -l myUser -pw  myPass

0

如果要将密码存储在mercurial.ini中,并且在升级到TortoiseHg 4.9或更高版本后不再起作用,则可能的解决方案是将端口添加到前缀:

[auth]
tax.prefix = http://server:8080
tax.username = cerveser
tax.password = mypassword
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.