我把我的工作推到一个远程git存储库。
每次推送都会提示我输入用户名和密码。我想避免它的每一个推送,但如何配置以避免它?
我把我的工作推到一个远程git存储库。
每次推送都会提示我输入用户名和密码。我想避免它的每一个推送,但如何配置以避免它?
当前回答
第一步-
使用以下命令在linux系统上创建SSH密钥
ssh-keygen -t rsa -b 4096 -C "your_email"
它将询问密码短语和文件名(默认为~/)。ssh / id_rsa ~ / . ssh / id_rsa . pub)
步骤2 -
一旦文件创建,添加公钥id_rsa。Pub到github帐户SSH部分。
第三步-
在您的机器上,使用以下命令将私钥id_rsa添加到ssh-agent
ssh-add ~/.ssh/id_rsa
步骤4 -
现在使用以下命令将远程url git@github.com:user_name/repo_name.git添加到本地git repo中。
git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git
这是它。
其他回答
如果你的电脑是安全的,或者你不关心密码安全,这可以很简单地实现。假设远程存储库位于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>
我建议使用凭证管理器来存储GitHub凭证。使用git config——global credential。助手存储是不安全的,因为它以明文存储GitHub密码。 对于Linux, libsecret是一个很好的替代方案。对于Ubuntu和其他一些linux发行版,您可以执行以下操作:
安装:
sudo apt-get update
sudo apt install libsecret-1-0 libsecret-1-dev
sudo apt install gnome-keyring
创建
cd /usr/share/doc/git/contrib/credential/libsecret/
Sudo make
配置git使用libsecret存储密码
git config --global credentail.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
在此设置后输入一次密码后,git凭据将由libsecret存储。
我使用的是https链接(https://github.com/org/repo.git) 而不是SSH链接;
git@github.com:org/repo.git
转换为我解决了这个问题!
将git客户端连接到操作系统凭据存储。例如,在Windows中,您将凭据帮助器绑定到wincred:
git config --global credential.helper wincred
在GitHub上使用https://时是否有办法跳过密码输入?
在Windows操作系统上使用这个代替,这对我来说是有效的:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
e.g.
git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git
git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git
git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git
git push origin master