【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
我从GitHub帐户克隆了一个Git存储库到我的PC。
我想同时使用PC和笔记本电脑,但要使用一个GitHub帐户。
当我尝试使用PC推送或从GitHub拉出时,它需要用户名和密码,但在使用笔记本电脑时则不需要!
我不想每次与Origin交互时都输入用户名和密码。 我在这里想念什么?
#1楼
我遇到了同样的问题,发现的最简单的解决方案是使用SSH URL而不是HTTPS:
ssh://git@github.com/username/repo.git
而不是这样:
https://github.com/username/repo.git
现在,您可以仅使用SSH密钥而不是username
和password
。
#2楼
除了更改为SSH之外,如果您不介意以明文形式输入密码,也可以继续使用HTTPS。 将其放在您的~/.netrc
,它不会询问您的用户名/密码(至少在Linux和Mac上如此):
machine github.com
login <user>
password <password>
添加 (请参阅VonC的第二条注释):在Windows上,文件名为%HOME%\\_netrc
。
如果您想加密,还请阅读VonC的第一条评论。
如果您拥有Git 1.7.10或更高版本,则可以使用另一个添加项 (请参阅user137717的注释)。
如果您要使用HTTPS克隆GitHub存储库,则可以使用凭据帮助程序告诉Git每次与GitHub对话时都记住您的GitHub用户名和密码。
这也适用于Linux,Mac和Windows。
#3楼
HTTPS更新:
GitHub为Windows启动了一个新程序,该程序可以在您使用HTTPS时存储您的凭据:
使用方法:
从这里下载程序
一旦运行该程序,它将编辑您的
.gitconfig
文件。 如果其中有多个,请重新检查它是否编辑了正确的.gitconfig
。 如果没有正确编辑,请将以下内容添加到您的.gitconfig
[credential] helper = !'C:\\\\Path\\\\To\\\\Your\\\\Downloaded\\\\File\\\\git-credential-winstore.exe'
注意
[credential]
之后的换行符。 它是必需的。打开命令行客户端,然后尝试
git push origin master
。 如果它要求您输入密码,请输入密码,然后您就可以通过了。 密码已保存!
#4楼
如果您使用的是SSH,并且您的私钥已使用密码进行了加密,那么当您使用Git进行 push
, pull
和fetch
进行网络操作时 , 仍然会提示您输入私钥的密码/密码 。
使用ssh-agent保存私钥密码/密码凭证
如果您不想每次都输入密码,可以使用ssh-agent
在每个终端会话中存储一次私钥密码凭证,正如我在“ 无法打开与身份验证代理的连接”的回答中所解释的:
$ eval `ssh-agent -s`
$ ssh-add
在Windows msysgit Bash中,您需要评估ssh-agent
的输出,但是我不确定是否需要在其他开发环境和操作系统中执行相同的操作。
ssh-add
在您的home .ssh
文件夹中查找.ssh
id_rsa
,这是默认名称,但是您可以将文件路径传递给具有不同名称的密钥。
杀死代理
完成终端会话后,可以使用kill标志-k
关闭ssh-agent
:
$ ssh-agent -k
-k
终止当前代理(由SSH_AGENT_PID环境变量提供)。
可选超时
此外,它可以采用可选的超时参数,如下所示:
$ ssh-add -t <timeout>
其中<timeout>
的格式为<n>h
表示<n>
小时, <n>m
表示<n>
分钟,依此类推。
根据ssh-agent
手册 :
-t life
为添加到代理中的身份的最大生存期设置默认值。 生存期可以以秒为单位或以sshd_config(5)中指定的时间格式指定。 使用ssh-add(1)为身份指定的生存期将覆盖此值。 如果没有此选项,则默认的最大生存期是永远的。
Cygwin用户的安全警告
Cygwin用户应注意在Cygwin中使用ssh-agent的潜在安全风险 :
人们应该意识到Cygwin 1下ssh-agent的潜在危险,尽管在本地netstat和远程端口下,似乎/ tmp / ssh-foo中指定的端口似乎无法被任何人访问吗?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
并在引用的链接处 :
但是,请注意Cygwin的Unix域套接字基本上是不安全的 ,所以我强烈反对在Cygwin下的ssh-agent的用法。
当您在Cygwin下运行ssh-agent时,它将在
/tmp/ssh-$USERNAME/
目录中创建AF_UNIX套接字。 在Cygwin下,AF_UNIX套接字通过AF_INET套接字进行仿真。 如果您通过记事本查看/tmp/ssh-$USERNAME/agent-socket-*
文件,则可以轻松看到。 您会看到类似!<socket >2080
然后运行
netstat -a
并感到惊讶! 您有一些程序正在监听端口2080。它是ssh-agent。 当ssh从服务器收到RSA质询时,它指的是/tmp/ssh-$USERNAME/agent-socket-*
(在Cygwin下,在本例中,这意味着它将打开与localhost:2080
连接)并询问ssh -agent使用它具有的私钥来处理RSA质询,然后将从ssh-agent收到的响应简单地传递到服务器。在Unix下,这种情况可以正常工作,因为在程序尝试访问AF_UNIX套接字时,Unix内核会检查权限。 但是,对于AF_INET套接字,连接是匿名的(请参阅“不安全”)。 想象一下,您正在运行Cygwin ssh代理。 恶意黑客可能会在您的包装箱中打开端口,找到ssh-agent使用的开放端口,打开与您的SSH服务器的连接,接收来自RSA服务器的RSA挑战,并通过他/她找到的开放端口将其发送到您的ssh-agent,并接收RSA响应,将其发送到SSH服务器,瞧,他/她已成功登录到您的服务器。
#5楼
资料来源: Setting Git
以下命令会将密码保存在内存中一段时间(对于Git 1.7.10或更高版本)。
$ git config --global credential.helper cache
# Set git to use the credential memory cache
$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3151237