我生成了一个没有密码的 SSH 密钥对,并将公钥添加到 GitHub。
连接
user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.
成功了,当我重命名密钥时,它失败了。
但是当我想推送我的更改时,它仍然会询问我的用户名和密码组合。
有没有没有密码的推送方法?
如果它要求您输入用户名和密码,则您的源远程指向的是 HTTPS URL 而不是 SSH URL。
将其更改为 ssh。
例如,像 Git 这样的 GitHub 项目将有一个 HTTPS URL:
https://github.com/<Username>/<Project>.git
和 SSH 之一:
git@github.com:<Username>/<Project>.git
你可以做:
git remote set-url origin git@github.com:<Username>/<Project>.git
更改 URL。
如果您确实在使用 SSH URL,但在 git 推送时仍被要求输入用户名和密码:
git remote set-url origin git@github.com:<Username>/<Project>.git
您应该尝试使用以下方法进行故障排除:
ssh -vT git@github.com
下面是一段示例输出:
...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
其实我之前已经把公钥加到GitHub了,我本地也有私钥。但是,我的私钥具有不同的名称,称为/c/Users/Yuci/.ssh/github_rsa
.
根据示例输出,Git 正在尝试/c/Users/Yuci/.ssh/id_rsa
,而我没有。因此,我可以简单地复制github_rsa
到id_rsa
同一目录中。
cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa
现在当我ssh -vT git@github.com
再次跑步时,我有:
...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...
现在我可以推送到 GitHub 而无需输入用户名和密码 :-)
此外,对于要点,您似乎必须省略用户名
git remote set-url origin git@gist.github.com:<Project code>
像往常一样,创建一个 SSH 密钥并将公钥粘贴到 GitHub。将私钥添加到 ssh-agent。(我假设这就是你所做的。)
要检查一切是否正确,请使用ssh -T git@github.com
接下来别忘了修改远程点如下:
git remote set-url origin git@github.com:username/your-repository.git
您必须使用SSH版本,而不是HTTPS。从存储库克隆时,复制带有SSH版本的链接,因为 SSH 易于使用并解决了所有访问问题。您可以为输入到您的帐户的每个 SSH 设置访问权限(如推送、拉取、克隆等...)
这是一个链接,它说明了为什么我们需要 SSH 以及如何使用它:一步一步
与提到的其他用户一样,您必须将其从使用 HTTPS 转换为 SSH。我没有看到端到端解决方案的答案。设置 ssh 密钥后,执行(在本地计算机上):
$ git remote set-url origin git@github.com:username/your_repo.git # Convert HTTPS -> SSH
$ ssh-add ~/.ssh/id_rsa_github # add private github ssh key ssh-agent (assuming you have it already running)
$ git push
你做的一切都很好,但 git 仍然通过密码询问,这对我有用,在你当前项目的路径中执行下一个突击队:
~ ssh-add -K ~/.ssh/id_rsaYourIdRsa
将您的 SSH 私钥添加到 ssh-agent 并将您的密码存储在钥匙串中。如果您使用不同的名称创建了密钥,或者如果您要添加具有不同名称的现有密钥,请将命令中的 id_rsaYourIdRsa 替换为您的私钥文件的名称。
使用命令行:
输入ls -al ~/.ssh
以查看是否存在现有的 SSH 密钥。
在终端中显示:没有目录存在
然后生成一个新的 SSH 密钥
第1步。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
第2步。
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>
步骤 3。
Enter passphrase (empty for no passphrase): [Type a password]
Enter same passphrase again: [Type password again]