git生成的ssh公钥部署在github后校验报错permission denied(publickey, password, keyboard-interactive)完美解决_xiaoqinvar的博客-爱代码爱编程
Git生成的ssh公钥部署在GitHub后校验报错Permission denied(publickey, password, keyboard-interactive)完美解决
前置
- 正确的配置了ssh公钥各个环节
- 同样的步骤在
gitee
上没问题,但是github
就不行 - 这篇文章以Mac为主,因为我用的就是,Windows根据原理自己慢慢解决!😁
报错
ssh -T git@github.com
Permission denied (publickey, password, keyboard-interactive)
验证自己的步骤
- 首先,确认咱们的公钥密钥是否存在
cd ~/.ssh/
// 如果没有就生成公钥密钥,网上教程太多了,不再赘述
// 查询已附加的公钥,一般会出现几个,指纹
ssh-add -l
4096 SHA256:xxxxxx your-email@xx.cn (RSA)
256 SHA256:xxxxxx your-email@xx.cn (ED25519) // github推荐算法
// 如果没有你就添加就完事,别笨到真复制粘贴了!⚠️
ssh-add ~/.ssh/${你的私钥名}
// 再次查看应该会看到指纹 ssh-add -l
- 校验指纹:不正确你就重新创建了再穿上去;去你的GitHub上 -> setting -> SSH And GPG keys 查看指纹是否一致
- 此时,公钥密钥没问题,GitHub上传到公钥也没问题后,就查看
config
文件!
vim ~/.ssh/config
// or
open ~/.ssh/config
没有就创建
HOST gitee.com
hostname gitee.com
User xiaoqivar
IdentityFile /Users/xiaoqinvar/.ssh/id_rsa
PreferredAuthentications publickey
// 特别注意这个的hostname,我的Permission denied可能就是DNS
HOST github.com
Hostname ssh.github.com
Port 443
User xiaoqinvar
IdentityFile /Users/xiaoqinvar/.ssh/id_ed25519
PreferredAuthentications publickey
- 你可以测试使用ssh.github.com测试github
ssh -T -p 443 git@ssh.github.com
// 如果有效就用这个主机地址即可,看到别人的评论140.82.114.4也行
到这里,我的问题就完全解决了
使用GPG
- 用于校验提交安全的
- 开启
- 下载gpg
brew install gpg
- 根据输入内容生成gpg密钥,密码设置的要记得要用
gpg --full-generate-key
- 列出密钥
gpg --list-secret-keys --keyid-format=long
------------------------------------
sec rsa4096/DB964648910EA155 2022-09-23 [SC]
09264A566BA57F100518797EDB964648130EA155
uid [ 绝对 ] xiaoqinvar <17683860320m0@sina.cn>
ssb rsa4096/B5C6C23FD147109B 2022-09-23 [E]
// 其中DB964648910EA155为id
- 将公钥提交到
ssh and gpg keys
里
// 获取公钥
gpg --armor --export DB964648910EA155为id
- git匹配gpg
git config --global user.signingkey {key_id} // 用你的key_id
- 加上
-S
参数,表示这次提交需要用GPG密钥进行签名,用来确保是git本人操作,可以设置成每次自动进行签名
// git commit -S -m "..."
git config --global commit.gpgsign true
- 要用弹框输入密码,这里需要下载官方推荐的工具
brew install pinentry-mac
echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent