使用ssh-key推送到没有密码的github

时间:2013-02-07 22:13:53

标签: github ssh-keys

我生成了一个没有密码的密钥对,并将公钥添加到github。 与

连接
user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

成功,当我重命名密钥时,它失败了。 但是,当我想推送我的更改时,它仍然会询问我的用户名/密码组合。

有没有办法在没有密码的情况下推送?

6 个答案:

答案 0 :(得分:366)

如果它要求您提供用户名和密码,则您的原始远程指针指向https网址而不是ssh网址。

将其更改为ssh。

例如,像Git这样的github项目将有https url

https://github.com/<Username>/<Project>.git

和ssh one:

git@github.com:<Username>/<Project>.git

你可以这样做:

git remote set-url origin git@github.com:<Username>/<Project>.git

更改网址。

答案 1 :(得分:9)

此外,对于要点,您似乎必须省略用户名

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

答案 2 :(得分:5)

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

这是一个链接,说明为什么我们需要ssh以及如何使用它:一步一步

Git Generate SSH Keys

答案 3 :(得分:5)

如果你确实使用了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: - )

答案 4 :(得分:0)

像往常一样,创建一个SSH密钥并将公共密钥粘贴到Github。将私钥添加到ssh-agent。 (我认为这就是您所做的)。 要检查所有内容是否正确,请使用ssh -T git@github.com

下一步不要忘记按如下方式修改远程点 git remote set-url origin git@github.com:username/your-repository.git

答案 5 :(得分:-3)

使用命令行:
输入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]