我生成了一个没有密码的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。

其他回答

如果它要求您输入用户名和密码,那么您的源远程服务器将指向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。

此外,对于gist,似乎必须省略用户名

git remote set-url origin git@gist.github.com:<Project code>

您必须使用SSH版本,而不是HTTPS版本。当您从存储库克隆时,请使用SSH版本复制链接,因为SSH易于使用并解决了访问中的所有问题。您可以为您输入到您的帐户的每个SSH设置访问权限(如推,拉,克隆等…)

这里有一个链接,它说明了我们为什么需要SSH以及如何使用它:一步一步地

Git生成SSH密钥

像往常一样,创建一个SSH密钥并将公钥粘贴到GitHub。将私钥添加到ssh-agent。(我猜你就是这么做的。)

要检查一切是否正确,使用ssh -T git@github.com

接下来,不要忘记修改远端点,如下所示:

git remote set-url origin git@github.com:username/your-repository.git

使用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)