我生成了一个没有密码的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.
当我重命名密钥时,它失败了。
但当我想要推送更改时,它仍然要求我输入用户名和密码组合。
有没有不用密码就能推的方法?
我生成了一个没有密码的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.
当我重命名密钥时,它失败了。
但当我想要推送更改时,它仍然要求我输入用户名和密码组合。
有没有不用密码就能推的方法?
当前回答
像往常一样,创建一个SSH密钥并将公钥粘贴到GitHub。将私钥添加到ssh-agent。(我猜你就是这么做的。)
要检查一切是否正确,使用ssh -T git@github.com
接下来,不要忘记修改远端点,如下所示:
git remote set-url origin git@github.com:username/your-repository.git
其他回答
如果它要求您输入用户名和密码,那么您的源远程服务器将指向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密钥并将公钥粘贴到GitHub。将私钥添加到ssh-agent。(我猜你就是这么做的。)
要检查一切是否正确,使用ssh -T git@github.com
接下来,不要忘记修改远端点,如下所示:
git remote set-url origin git@github.com:username/your-repository.git
此外,对于gist,似乎必须省略用户名
git remote set-url origin git@gist.github.com:<Project code>
使用SSH时,必须使用$ git remote add origin git@github.com:USERNAME/REPOSITORY.git,而不是git remote add origin remote_repository_URL。 你可以用$ git remote -v检查它,如果你看到下面的两行格式,它就能正常工作:
origin git@github.com:username/repo-name.git (fetch)
origin git@github.com:username/repo-name.git (push)
如果你确实在使用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而不需要用户名和密码:-)