git permission denied(publickey)

如果已经生成了.ssh且上传了公钥,但还是出现permission denied(publickey),可以按如下方式解决:

1. 首先运行 ssh -T git@github.com,github.com不是固定的,可以替换成你自己的远程服务器。

这个命令是尝试连接远程服务器,如果连接成功,则会输出:

Welcome to ...

如果输出permission denied(publickey),则说明有问题。

2. 如果第一步失败了,则运行ssh -vT git@github.com,这个命令会输出详细的调试信息。

建议一行行看,不是很复杂,绝对能找到蛛丝马迹。

以我本机2.37.3版本的git为例,就会看到提示信息 "no mutual signature algorithm",

然后搜索相应关键词,会发现高版本的git默认不支持ssh-rsa算法,建议使用ed5519算法。

最后,改用ssh-keygen -t ed25519 -C "your_email@example.com"重新生成.ssh文件夹中的内容。

也可以参考网上的其他方法,在.ssh中添加配置文件config,然后在配置文件中添加:

PubkeyAcceptedKeyTypes +ssh-rsa

### 解决 Git Push 权限被拒绝(公钥)问题 当遇到 `git push` 出现 `Permission denied (publickey)` 错误时,这通常意味着客户端尝试通过 SSH 连接到远程仓库失败,因为服务器未能验证所提供的身份凭证。具体来说,可能是由于以下几个原因之一: - 客户端缺少有效的私钥或对应的公钥未上传至目标Git服务提供商处[^2]。 - 使用了不匹配的密钥对或是存在多组密钥管理不当的情况[^5]。 为了修复此问题并成功执行推送操作,可以按照下面的方法来处理这个问题: #### 验证现有SSH Key 首先确认本地计算机上是否存在已有的SSH key,并检查其状态是否正常。可以通过命令行输入以下指令查看当前用户的默认位置下是否有可用的SSH keys: ```bash ls -al ~/.ssh ``` 如果发现文件名为 `id_rsa` 和 `id_rsa.pub` 的一对,则说明已有生成好的RSA类型的SSH key;反之则需创建新的密钥对。 #### 创建新的SSH Key 假如之前未曾设立过SSH key或者怀疑旧版本可能存在问题,那么建议重新生成一个新的SSH key。这里以电子邮件地址作为标签为例展示如何建立新密钥: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` 对于较老的操作系统支持情况不明朗的情况下可以选择使用 RSA 算法替代 Ed25519 : ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述任一命令执行完毕后将会提示指定保存路径,默认情况下可以直接按回车键接受推荐选项。接着会询问密码短语用于加密存储于磁盘上的私钥部分——可以根据个人需求决定要不要设置这个额外的安全层。 #### 将公钥添加到Git服务平台 完成前面两步之后得到的新建公钥需要提交给所使用的Git平台以便后续认证过程能够顺利进行。假设正在使用的是GitHub, 则可通过浏览器登录账户,在Settings -> SSH and GPG keys 页面点击 New SSH key 按钮并将 `.ssh/id_ed25519.pub` 或者 `.ssh/id_rsa.pub` 文件里的内容粘贴进去完成关联工作[^3]。 #### 启动并加载SSH Agent 为了让本次终端会话期间内自动提供正确的私钥供远程主机校验之用,还需要启动SSH agent以及向其中加入刚才准备好的私钥材料。先确保agent已经在运行之中: ```bash eval "$(ssh-agent -s)" ``` 随后利用 `ssh-add` 命令把想要注册的那个私钥导入进来: ```bash ssh-add ~/.ssh/id_ed25519 ``` 如果是基于传统方式构建起来的RSA形式密钥,则相应调整为: ```bash ssh-add ~/.ssh/id_rsa ``` 此时再次尝试发起 `git clone`, `git fetch`, `git pull` 或者 `git push` 请求应该不会再遭遇因缺乏适当授权而导致的阻碍了。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值