我有一个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文件中解释它。
我确定这又是一个配置问题,我错过了某些东西,但我找不到在哪里。
请帮忙:)
谢谢。