git@gitee.com: Permission denied (publickey)

问题描述

今天进行上传代码遇到:git@gitee.com: Permission denied (publickey).具体错误如下:

Load key "/c/Users/Administrator/.ssh/id_rsa.pub": invalid format
git@gitee.com: Permission denied (publickey).

问题原因

有以下几种原因:

  1. gitee 上的配置ssh key没有配置好
  2. config配置问题,~/.ssh/config中的配置与gitee上的不匹配
    经过不断的尝试,发现是第二种原因:
    配置如下:
$ cat ~/.ssh/config
#Default gitHub user Self
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa.pub

#Add gitLab user
    Host 101.36.31.164
    Port 18080
    HostName http://101.36.31.164
    User git
    IdentityFile ~/.ssh/id_rsa.pub

# gitee
Host gitee.com
    Port 22
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_rsa.pub

原来是config 配置出错了,IdentityFile ~/.ssh/id_rsa.pub应该给为IdentityFile ~/.ssh/id_rsa

$ cat ~/.ssh/config
#Default gitHub user Self
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

#Add gitLab user
    Host 10.36.31.164
    Port 18080
    HostName http://10.36.31.164
    User git
    IdentityFile ~/.ssh/id_rsa

# gitee
Host gitee.com
    Port 22
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_rsa

```markdown ### 问题分析 错误信息: ``` git@gitee.com: Permission denied (publickey) ``` 表明 SSH 无法通过公钥认证连接 Gitee。这是由于本地 SSH 密钥未正确生成、未添加到 Gitee 账户,或 SSH Agent 未加载密钥所致。 --- ### 解决方案 #### ✅ 1. **检查是否存在 SSH 密钥** 运行命令查看是否已有 RSA 密钥: ```bash ls ~/.ssh/id_rsa.pub ``` 若提示“No such file”,说明尚未生成密钥。 #### ✅ 2. **生成新的 SSH 密钥** 执行以下命令并按提示完成(邮箱替换为你的 Gitee 注册邮箱): ```bash ssh-keygen -t rsa -C "your_email@example.com" ``` - 默认保存路径:`~/.ssh/id_rsa` - 可设置密码保护(可选) #### ✅ 3. **复制公钥内容** 输出公钥内容: ```bash cat ~/.ssh/id_rsa.pub ``` 复制从 `ssh-rsa` 开始直到邮箱的整段内容。 #### ✅ 4. **添加公钥到 Gitee** 1. 登录 [Gitee 官网](https://gitee.com) 2. 进入「用户设置」→「SSH 公钥」 3. 标题自定义(如 `my-linux-pc`) 4. 粘贴刚才复制的公钥内容 5. 点击「确定」 #### ✅ 5. **启动 SSH Agent 并添加私钥** 确保 SSH Agent 正在运行并加载密钥: ```bash eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa ``` #### ✅ 6. **测试连接** 运行测试命令: ```bash ssh -T git@gitee.com ``` 成功时会返回: ``` Hi <username>! You've successfully authenticated, but Gitee.com does not provide shell access. ``` --- ### **知识点(列出该代码中遇到的知识点)** - **SSH 公钥认证**:通过非对称加密验证身份,客户端保留私钥,服务端存储公钥以实现免密登录。 - **SSH Agent 作用**:管理私钥的临时驻留程序,避免重复输入密码,需手动添加密钥。 - **Git over SSH 协议**:使用 `git@host:path/repo.git` 格式地址,依赖 SSH 密钥完成安全通信。 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aijava1

请我喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值