[使用ssh-key无需密码即可推送到GitHub

问题描述 投票:208回答:6

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

连接方式

user@dev:/var/www/project# ssh -T [email protected]
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

成功,当我重命名密钥时,它失败。

但是当我想进行更改时,仍然会询问我用户名和密码的组合。

有没有没有密码的方法吗?

github ssh-keys
6个回答
405
投票

如果要求您提供用户名和密码,则您的原始远程对象指向HTTPS URL,而不是SSH URL。

将其更改为ssh。

例如,像Git这样的GitHub项目将具有HTTPS URL:

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

和SSH之一:

[email protected]:<Username>/<Project>.git

您可以做:

git remote set-url origin [email protected]:<Username>/<Project>.git

更改URL。


11
投票

另外,对于要点,看来您必须忽略用户名

git remote set-url origin [email protected]:<Project code>

8
投票

如果您确实使用了SSH URL,但是在git push时仍然要求输入用户名和密码:

git remote set-url origin [email protected]:<Username>/<Project>.git

您应该尝试使用以下方法进行故障排除:

ssh -vT [email protected]

下面是一个示例输出:

...
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 [email protected]时,我有:

...
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:-)


5
投票

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

这里是一个链接,其中说明了我们为什么需要SSH以及如何使用它:逐步操作

Git Generate SSH Keys


0
投票

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

下一个不要忘记按如下方式修改远程点git remote set-url origin [email protected]:username/your-repository.git


-4
投票

使用命令行:

输入ls -al ~/.ssh以查看是否存在现有的SSH密钥。

在终端显示:没有目录

然后生成一个新的SSH密钥

步骤1。

ssh-keygen -t rsa -b 4096 -C "[email protected]"

步骤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]
© www.soinside.com 2019 - 2024. All rights reserved.