当前位置: 首页 > 知识库问答 >
问题:

使用ssh-key无密码推送至GitHub

凤经武
2023-03-14

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

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

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

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

共有3个答案

柴昆杰
2023-03-14

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

git remote set-url origin git@gist.github.com:<Project code>
方建明
2023-03-14

如果您确实使用SSHURL,但在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/User/Yuci/. ssh/github_rsa

根据示例输出,Git正在尝试/c/User/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,而不会被要求输入用户名和密码:-)

苏晓博
2023-03-14

如果它要求您输入用户名和密码,那么您的源远程服务器将指向HTTPS URL,而不是SSH URL。

将其更改为 ssh。

例如,像 Git 这样的 GitHub 项目将有一个 HTTPS 网址:

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。

 类似资料:
  • 我是gitlab的新手,这是我第一次使用ssh。我可以生成ssh密钥并将其添加到我的帐户设置中。我可以通过ssh克隆repo,我可以签出到我的分支,但我仍然不能做的是将我的更改推送到分支。以下是我在尝试推送ssh密钥之前(按照此处的说明)生成ssh密钥的步骤: PS.我正在使用Windows 10。 在终端上(作为管理员),键入:. 按获取ssh键的默认路径 提供密码 在中创建配置文件。这是我在配

  • 管理服务器,向 git 远程推送代码,做这些事之前都需要先验证你的身份,一般就是使用你的用户名与密码。ssh-key 可以让你不再输入用户名与密码就能做这些事。在你电脑上生成 ssh-key ,它是一对,一个私钥(Private key),一个公钥(Public key)。 然后你去配置一下服务(服务器,git 远程服务 ... ),把你生成的 ssh-key 的公钥告诉这些服务。这样你再使用这些

  • 问题内容: 我正在尝试使用运行 (安全副本)命令。登录名要求我发送密码: 这立即返回错误: 我 确定 密码正确。我可以通过在外壳上手动调用来轻松验证它。那为什么不起作用呢? 请注意,有许多与此类似的问题,询问并发送用于自动SSH或FTP登录的密码 这些问题的答案不起作用和/或不适用,因为我使用的是Python 3。 问题答案: 您链接的第二个答案建议您使用Pexpect(这通常是与需要输入的命令行

  • 我正在尝试使用AWS SNS来推送我的应用程序的通知。我已经使用用户信息和注册ID成功设置了各个endpointARN的注册。 我可以通过控制台发送单独的消息很好,但是我似乎不知道如何以编程方式发送它(JAVA) 控制台方式:(工作) http://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-directmobile.html 通过JAVA

  • 问题内容: 我正在尝试基于PyAPN为iPhone实现推送通知 当我在本地运行它时,它阻止并提示我手动输入密码,并且在我执行该操作之前不起作用 我不知道如何设置它以便在没有提示的情况下工作 这是我的代码: 问题答案: 创建不带短语的.pem文件时,请指定 创建不带短语的.pem文件 用短语创建.pem文件 如果您有一个带有密码的.pem文件,则可以使用以下 方法 来 删除其PyAPN的密码 用于制