在Windows上配置Git以便通过ssh访问Github

3

我有一个Github账户,里面有多个项目。

我使用ssh密钥将这些项目克隆到我的Windows 10电脑上。

过了一段时间,我的ssh密钥似乎被泄露了,所以我在Github和本地上删除了它们,然后重新生成了新的:

  • 4096位
  • rsa2
  • 将公钥保存为~/.ssh/git_id_rsa.pub
  • 添加公钥到我的Github ssh密钥
  • 将私钥保存为~/.ssh/git/git_id_rsa.ppk
  • 转换为Openssh格式为~/.ssh/git_id_rsa

事实上,我希望为我的不同网络工具使用不同的ssh密钥(Github使用一个,DigitalOcean使用一个,OVH云使用一个等等...),并且我想在连接到每个主机时指定要使用的密钥。所以我更改了用PuttyGen生成(并转换为同样格式)的ssh默认名称。

git_id_rsa.ppk(或git_id_rsa)密钥没有密码,因为看起来GitHub不喜欢密码(很久以前就知道了)。

我已经像下面这样配置了我的(projectdir)/.git/config:

[remote "origin"]
    url = git@github.com:hdGuild/JenkinsServerOnDO.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    identityfile= ~/.ssh/git_id_rsa

但是当我尝试进行Git Pull时,出现了以下错误:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

根据以下回答,我创建了~/.ssh/config文件,并使用以下代码(使用OpenSSH key用于GitHub),它可以工作:

Host github.com
IdentityFile ~/.ssh/git_id_rsa

事实是,如果我需要~/.ssh/config文件,为什么我还需要像上面描述的那样配置本地git的(projecytdir)/.git/config呢?
我想配置本地git使用正确的ssh密钥连接Github,而不必在我的~/.ssh/config文件中解释它。
我确定这又是一个配置问题,我错过了某些东西,但我找不到在哪里。
请帮忙:)
谢谢。
1个回答

2

好的,和之前一样,我自己回答我的问题 :D

经过更多的研究,我找到了这篇文章,它解释了如何在Git本地配置文件中指定用于git sh连接的ssh密钥。

在项目目录中执行以下命令:

git config core.sshCommand "ssh -i ~/.ssh/git_id_rsa -F /dev/null"

这样,git_id-rsa 将被 git 用于此特定项目的 ssh 连接(因为它是本地配置)。谢谢阅读。

尝试了一个小时不同的SO答案后,这个方法终于奏效了! - Denes Papp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接