我把我的工作推到一个远程git存储库。
每次推送都会提示我输入用户名和密码。我想避免它的每一个推送,但如何配置以避免它?
我把我的工作推到一个远程git存储库。
每次推送都会提示我输入用户名和密码。我想避免它的每一个推送,但如何配置以避免它?
当前回答
你必须设置一个SSH私钥,你可以看看这个页面,如何在Mac上进行设置,如果你在linux上,指南应该是差不多的,在Windows上你需要像MSYS这样的工具。
其他回答
如果您已经设置了SSH密钥,并且仍然得到密码提示,请确保表单中有您的回购URL
git+ssh://git@github.com/username/reponame.git
而不是
https://github.com/username/reponame.git
要查看您的回购URL,运行:
git remote show origin
你可以像这样用git remote set-url修改URL:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
将git客户端连接到操作系统凭据存储。例如,在Windows中,您将凭据帮助器绑定到wincred:
git config --global credential.helper wincred
在GitHub上使用https://时是否有办法跳过密码输入?
只需使用——repo选项git push命令。是这样的:
$ git push --repo https://name:password@bitbucket.org/name/repo.git
看起来,至少在Windows上使用TortoiseGIT时,可以创建SSH密钥并将其传输到GIT服务器,只需使用:
> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]
如果你的电脑是安全的,或者你不关心密码安全,这可以很简单地实现。假设远程存储库位于GitHub上,origin是远程存储库的本地名称,请使用此命令
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
——push标志确保只更改git push命令的存储库URL。(在最初的帖子中问的问题只是关于git push命令。仅推送操作需要用户名+密码是GitHub上公共存储库的正常设置。注意,GitHub上的私有存储库也需要用户名+密码来进行拉取操作,所以对于私有存储库,你不会想要使用——push标志…)
警告:这本质上是不安全的,因为:
你的ISP,或者任何记录你的网络访问的人,可以很容易地 在URL中以明文形式查看密码; 任何访问你电脑的人都可以使用git remote show origin查看你的密码。
这就是为什么使用SSH密钥是可以接受的答案。
即使是SSH密钥也不是完全安全的。例如,任何获得PC访问权限的人仍然可以进行推送操作,破坏你的存储库,或者更糟糕的是,对你的代码进行细微更改的推送提交。(所有推送提交在GitHub上明显可见。但是如果有人想偷偷地改变你的代码,他们可以在不改变提交消息的情况下修改之前的提交,然后强制推送。这将是隐秘的,在实践中很难被发现。)
但泄露密码更糟糕。如果攻击者获得了您的用户名+密码,他们可以做的事情,如锁定您自己的帐户,删除您的帐户,永久删除存储库等。
或者,为了简单和安全,你可以在URL中只提供你的用户名,这样你每次推送git时都需要输入你的密码,但你不必每次都提供你的用户名。(我很喜欢这种方法,每次git push时都需要输入密码,这样我就不会不小心git push了。)
git remote set-url --push origin https://<username>@github.com/<repo>