我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。

我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。

我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。

然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?


当前回答

面临着同样的问题。

请确保已正确设置远程原点:

$git remote add origin master "https://...git " 

其他回答

我也有同样的问题。MacOS Mojave钥匙链不断询问密码。为了安全起见,您的id_rsa应该使用密码短语进行加密。然后尝试将其添加到密钥链ssh-add-K~/.ssh/id_rsa

如果密钥位于~/.ssh以外的另一个文件夹中,请用正确的文件夹替换。

Keychain现在知道了你的ssh密钥,希望现在一切正常。

如果您仍然面临这个问题,请尝试

1. brew install keychain

2. echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
   echo 'source $HOME/.keychain/$HOSTNAME-sh' ~/.bash_profile

3. ssh-add -K ~/.ssh/id_rsa

希望它现在应该起作用了。

更新:-K标志已被弃用。请改用以下方法:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key

正如其他人所说,您可以安装密码缓存助手。我主要只是想发布其他平台的链接,而不仅仅是Mac。我正在运行Linux服务器,这很有用:在Git中缓存GitHub密码

对于Mac:

git credential-osxkeychain

窗户:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

如果设置了SSH代理,还可以将其添加到~/.gitconfig中,以强制git对所有GitHub repo使用SSH,而不是HTTPS:

[url "ssh://git@github.com/"]
    insteadOf = git://github.com/
    insteadOf = https://github.com/

(如果你主要使用公共回购,你也可以使用pushInsteadOf而不是insteadOf,因为从公共回购中读取可以在没有身份验证的情况下完成)。

Windows和GitHub使用SSH推/拉Git指南:Windows Git图解指南

下载并安装PuTTY设置环境变量“GIT_SSH”=“path\to\plink.exe”(在已安装的腻子文件夹中)-非常重要!!!重新启动Windows资源管理器以使环境变量生效(不能仅重新启动命令提示符)运行puttygen.exe生成新密钥,将公钥复制到GitHub站点将此新私钥保存在磁盘上的安全位置(最好不要Dropbox)运行putty.exe并将SSH连接到github.co通过运行“shell:startup”快速进入启动文件夹。通过选美让您的私钥启动Windows。使用语法“path\to\pageage.exe”“path \to\privatkey”在Startup文件夹中创建快捷方式我们不需要在存储库的.git/config中设置“puttykeyfile”设置非常重要的是,使用的是GitHub的“SSH克隆URL”,而不是HTTPS。

运行macOS Cataline 10.15时,密钥链缓存方法对我不起作用

以下是对我有用的:

git remote rm origin

git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git

这也应该在GitLab上运行

确保用户名包含电子邮件地址,以删除@email部分,否则您将收到一个错误,说明URL使用了错误/非法格式或缺少URL。

希望这有帮助!