当前位置:  开发笔记 > 编程语言 > 正文

如何使用Mercurial保存用户名和密码?

如何解决《如何使用Mercurial保存用户名和密码?》经验,为你挑选了5个好方法。

我在个人项目中使用了Mercurial,每次我想将某些东西推送到服务器时,我一直在输入我的用户名和密码.

我尝试将以下内容添加到.hgrc我的主目录中的文件中,但它似乎完全被忽略了.

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

如何以正确的方式做到这一点?



1> Laurens Hols..:

你可以让一个auth部分的.hgrcMercurial.ini文件,如下所示:

[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd

'bb'部分是一个任意标识符,用于将前缀与用户名和密码相匹配 - 方便管理不同站点的不同用户名/密码组合(前缀)

您也可以只指定用户名,然后只需在推送时输入密码.

有关详细信息,请参阅:http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

我还建议看看密钥环扩展.因为它将密码存储在系统的密钥环而不是纯文本文件中,所以它更安全.它与Windows上的TortoiseHg捆绑在一起,目前正在讨论如何在所有平台上将其作为捆绑扩展分发.


当服务器是:ssh:// HGSERVER时,为什么这不起作用?"ssh://用户名:密码@HGSERVER"格式也不起作用..

2> Chris McCaul..:

有三种方法可以执行此操作:使用.hgrc文件,使用ssh或使用密钥环扩展


1. INSECURE方式 - 更新你的〜/ .hgrc文件

适用于我的格式(在我的〜/ .hgrc文件中)就是这样

[ui]
username=Chris McCauley 

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


您可以通过添加唯一标记来添加更多三元组的前缀,用户名和密码,从而配置任意数量的repos.

这仅适用于Mercurial 1.3,显然您的用户名和密码是纯文本 - 不好.


2.安全方式 - 使用SSH来使用密码进行避免

Mercurial完全支持SSH,因此我们可以利用SSH无需密码登录服务器的能力 - 您可以进行一次性配置以提供自生成的证书.这是迄今为止最安全的做法.


您可以在此处找到有关配置无密码登录的更多信息


3.密钥环扩展

如果您想要一个安全的选项,但不熟悉SSH,为什么不尝试这个呢?

来自文档......

扩展在第一次拉/从给定的远程存储库提示输入HTTP密码(就像默认情况下一样),但是在密码数据库中保存密码(由用户名和远程存储库URL的组合键控).在下一次运行时,它会检查.hg/hgrc中的用户名,然后检查密码数据库中的合适密码,如果找到则使用这些凭据.

还有更详细的信息在这里


@Peter Rowell:1.这有什么不同?我说他的解决方案不会更快.2.它与托管环境无关,它纯粹是客户端(与SSH解决方案不同,它需要在服务器端进行更改才能支持它).对于拖钓和吹嘘的光泽,我仍然说它不是一个干净的解决方案.您需要一个本地用户,您必须为他们提供shell访问权限然后限制它.Shell访问并不总是一个明智的选择.我很惊讶你的经验中有人没有遇到过一个不想让你的服务shell访问的系统管理员.
方法2实际上是唯一*安全地处理事物并在远程系统上维护用户级权限的方法.
Satoru,Chris并不是在谈论mercurial,但是关于ssh:ssh可以设置,这样你就不必使用密码识别自己(如下所述:http://www.debian-administration.org/articles/152).
user570626使用密钥环集成的答案要比其中任何一个好得多.@Peter Rowell:如果你有一些用户和存储库,ssh设置真的很痛苦; 您需要本地unix用户,并且必须限制可以使用.ssh/authorized_keys和shell包装器运行的命令.不是一个干净的解决方案.
@Draemon:我想我们有不同的经历.就个人而言,我不会在我没有shell提示符的系统上工作.它让我完全依赖于其他系统已经安装了我需要的东西.我的一般经验是,如果我无法得到提示,我几乎肯定无法获得我认为对我的工作流程至关重要的其他服务.不同人的不同(关键)笔画.

3> 小智..:

没有人提到密钥环扩展.它会将用户名和密码保存到系统密钥环中,这比将密码存储在如上所述的静态文件中要安全得多.执行以下步骤,您应该很高兴.我在大约2分钟内完成了Ubuntu的运行.

>> sudo apt-get install python-pip
>> sudo pip install keyring
>> sudo pip install mercurial_keyring

**Edit your .hgrc file to include the extension**
[extensions]
mercurial_keyring = 

https://www.mercurial-scm.org/wiki/KeyringExtension



4> Roberto Aloi..:

一个简单的hack是在项目.hg/hgrc文件的push url中添加用户名和密码:

[paths]
default = http://username:password@mydomain.com/myproject

(注意,这样就可以用纯文本格式存储密码)

如果您正在处理同一域下的多个项目,则可能需要在文件中添加重写规则~/.hgrc,以避免对所有项目重复此操作:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

同样,由于密码以纯文本格式存储,我通常只存储我的用户名.

如果你在Gnome下工作,我会解释如何在这里集成Mercurial和Gnome Keyring:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/



5> Arun Sangal..:

NOBODY上面向新手用户解释/澄清了条款.他们对这些条款感到困惑

.hg/hgrc - 此文件用于存储库,位于本地/工作空间位置/实际存储库的.hg文件夹中.

〜/ .hgrc - 这个文件与下面的文件不同.此文件位于〜或主目录.

myremote.xxxx = ..... bb.xxxx = ......

这是[auth] section/directive下的一行,同时使用mercurial keyring扩展.确保你放在那里的服务器名称,与你在做"hg clone"时使用的服务器名称匹配,否则密钥环会说,用户找不到.在下面的行中的bb或myremote是你在做"hg clone http:/.../../ repo1 bb或myremote"时必须给出的"别名",否则它不会工作或你必须确保你的本地repository的.hg/hgrc文件包含相同的别名,即(你在做hg clone时给出的...作为最后一个参数).

PS以下链接的详细信息,对不起快速书面语法.

/sf/ask/17360801/#14269997

http://www.linuxquestions.org/questions/showthread.php?p=4867412#post4867412

/sf/ask/17360801/#14270602

OpenSUSE Apache - Windows LDAP - 组用户身份验证 - Mercurial

例如:如果在〜/ .hgrc(用户在Linux/Unix中的主目录)或用户主目录的Windows中的mercurial.ini中包含,则包含以下行,如果你这样做

`"hg clone http://.../.../reponame myremote"`

,然后每个http repo链接不会多次提示您输入用户凭据.在[extensions]下的〜/ .hgrc中,有一行"mercurial_keyring ="或"hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py"..其中一行应该在那里.

[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456

我正在尝试找出如何设置PREFIX属性,以便用户可以在没有用户名/密码提示的情况下克隆或执行任何Hg操作,而无需担心他在http:// ..../...中提到的内容使用Hg repo链接时的servername.它可以是IP,服务器名称或服务器的FQDN

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有