当我克隆一个存储库时,我一直有点“忍受”Github总是问我的用户名和密码。我想绕过这一步,因为这是我的工作流中的一个烦恼。

我尝试使用本指南设置SSH密钥(我成功地做到了)。https://help.github.com/articles/generating-ssh-keys,我成功了。

我的问题是,当克隆一个存储库(使用SSH)时,我仍然被要求输入我的github密码和密码短语。我的理解是,在我设置了这个SSH密钥之后,我就不再需要这样做了。

我不知道该问什么,所以我就说说我的目标吧。

我希望能够克隆存储库,而不必一直把我的Github信息。

我的SSH密钥丢失了什么?如果有人能提供一些指导或资源,我会很感激,因为当涉及到GitHub中的SSH身份验证时,我总是感到有点失落。

据我所知,这是一个测试事情是否正常工作的命令,下面是来自我的控制台的输出:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

当我输入密码时,应该先失败吗?然后,当我输入密码时,它就通过了。


当前回答

我最近升级到macOS Mojave,并通过homebrew安装了一些工具,这似乎是把苹果版本的ssh-add换成了另一个版本。我默认版本的ssh-add没有-K选项。这导致了以下错误:

# ssh-add:非法选项——K

您可以通过运行哪个ssh-add来查看您使用的是哪个版本的ssh-add。

(我的存储在/usr/local/bin/ssh-add)

为了解决这个问题,我必须指向苹果的版本:

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git/GitHub之后运行得很好。有关更多信息,请参见:Error: ssh-add: illegal option——K

其他回答

这里所有的答案我都试过了,没有一个管用!我的密码将无法在会话/重新启动我的Mac之间保存。

我从OpenRadar和Twitter上的讨论中发现,苹果故意改变了macOS 10.12 Sierra中SSH -agent的行为,不再自动加载以前的SSH密钥。为了保持与酋长岩相同的行为,我做了以下事情:

ssh-add -K ~/.ssh/id_rsa . sh 注意:将路径更改为您的id_rsa密钥所在的位置。 ssh-add—— 创建(如果存在则编辑)以下~/。ssh /配置文件: 主机* UseKeychain是的 AddKeysToAgent是的 IdentityFile ~ / . ssh / id_rsa

现在我的密码在重启我的Mac之间被记住了!

如果你以前使用的是密码认证,但现在使用的是SSH认证,你需要将远程url从HTTPS切换到SSH:

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

github上的这个页面有你需要的答案。你必须从https切换到ssh认证。

检查它是如何验证的,如下所示。

$ git remote -v
> origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
> origin  https://github.com/USERNAME/REPOSITORY.git (push)

使用git remote set-url命令将远程服务器的URL从HTTPS更改为SSH。

$ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

再次使用

$ git remote -v
# Verify new remote URL
> origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
> origin  git@github.com:USERNAME/REPOSITORY.git (push)

这是所有。它现在可以工作了。

在LinuxMint/Ubuntu工作

执行以下步骤

步骤1:

去文件=> /.ssh/config

将以下行保存到文件中

Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /home/apple/myssh-privatekey
    AddKeysToAgent yes

不要忘记添加这一行AddKeysToAgent yes

步骤2:

打开终端并将密钥集添加到ssh-add

$ ssh-add -k /home/apple/myssh-privatekey

提供密码短语。

加上上面的答案。 为了git能够使用ssh-agent,不得不在Windows上再做一步。

必须在powershell中执行以下命令来更新环境变量:

PS> [Environment]::SetEnvironmentVariable("GIT_SSH", "$((Get-Command ssh).Source)", [System.EnvironmentVariableTarget]::User)

重启VSCode, Powershell或任何你正在使用的终端来激活env变量。

完整的说明可以在这里(https://snowdrift.tech/cli/ssh/git/tutorials/2019/01/31/using-ssh-agent-git-windows.html)找到。