Answers:
如果要求您提供用户名和密码,则您的源远程指向的是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。
git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
如果您确实在使用SSH URL,但是在git push时仍然要求输入用户名和密码:
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 :-)
您必须使用SSH版本,而不是HTTPS。从存储库克隆时,请复制SSH版本的链接,因为SSH易于使用并解决了所有访问问题。您可以为输入到帐户中的每个SSH设置访问权限(例如推,拉,克隆等)。
这是一个链接,其中说明了我们为什么需要SSH以及如何使用它:逐步
使用命令行:
输入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>
第三步
Enter passphrase (empty for no passphrase): [Type a password]
Enter same passphrase again: [Type password again]
https://github...
遥控器中使用。他们还应该遵循git@github...
格式。