当我克隆一个存储库时,我一直有点“忍受”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.

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


当前回答

您可以删除密钥的密码短语

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

或者你可以逃跑

$ ssh-keygen -p

您将得到输入keyfile的提示。默认为~/。Ssh /id_rsa so按enter键

您将被提示输入当前的密码短语,请输入。

然后会出现输入新口令的提示,按enter键

其他回答

添加没有钥匙串的身份

有时,您可能不希望密码短语存储在密钥链中,但又不想一次又一次地输入密码短语。

你可以这样做:

ssh-add ~/.ssh/id_rsa 

这将询问您的密码,输入它,它不会再问,直到您重新启动。

使用钥匙串添加身份

正如@dennis在评论中指出的那样,通过将密码保存在你的钥匙串中,你可以在添加这样的身份时使用——apple-use-keychain选项(Ubuntu的-k):

ssh-add --apple-use-keychain ~/.ssh/id_rsa

再一次,它将要求您输入密码,输入它,这一次它将不再要求您输入这个身份。

对于Mac OSX Sierra,我发现github上建议的Open Radar修复了我的问题。似乎Sierra改变了默认行为(我在升级后开始遇到这个问题)。

我发现这个特别有用: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

ssh-add -A 

这导致我的身份在运行后被添加到代理中

ssh-add -K {/path/to/key}

总之,在OSX.12中:

ssh-add -K {/path/to/key}
ssh-add -A 

会导致:

Identity added: {/path/to/file} ({/path/to/file})

编辑: 我注意到,下一次我完全重启(即代理停止并重新启动)时,它不再工作。更完整的解决方案是上面提到的@ChrisJF:创建~/。ssh / config文件。以下是我的输出:

$ cat ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

您可以根据需要添加任意数量的IdentityFile条目,但这是默认设置。这也是上面的开放式雷达链接上的“趋势”答案,ATM。

在Mac OSX上,您可以使用以下命令将您的私钥添加到keychain:

ssh-add -K /path/to/private_key

如果您的私钥存储在~/。SSH,命名为id_rsa:

ssh-add -K ~/.ssh/id_rsa

然后系统会提示您输入密码,该密码将存储在您的钥匙串中。

编辑-处理重启

为了在重新启动后也不必填写密码,在ssh配置文件中添加以下内容(通常位于~/.ssh/config)

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

一般来说,下面是允许您使用ssh远程连接到服务器的步骤,无需密码:

创建一对rsa私钥和公钥 $ ssh-keygen -t rsa -b 4096 -C "your comments" 复制您的公钥并登录到远程服务器 将您的公钥添加到.ssh/authorized_keys 如果您的计算机中有多个ssh密钥,您可能需要使用ssh-add添加密钥 $ ssh-add /path/to/private/key 然后尝试ssh到服务器 $ SSH username@your_ip_address

来源:http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html

尝试ssh-agent,请参见:https://help.github.com/articles/working-with-ssh-key-passphrases