git 使用ssh 克隆代码出现 Permission denied 错误

文章讲述了在GitLab环境中,尽管A地址的SSH密钥(id_rsa.pub)配置正常,但尝试从B地址克隆代码时遇到Permissiondenied错误。作者提供了创建.ssh/config文件以支持多GitLab克隆的解决方案,强调了设置正确访问权限的重要性。

场景:
A B两个gitlab地址,A地址配置了id_rsa.pub 可以拉代码,github配置了也没问题,但是在B的gitlab中配置id_rsa.pub使用ssh克隆代码就会出现
Permission denied的错误,

Permission denied, please try again.
git@127.0.0.1's password:
git@127.0.0.1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.

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

参考链接:

https://blog.51cto.com/u_14201949/5996117

在自己的.ssh 目录下创建config文件使支持多gitlab克隆代码

Host *
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
### git clone Permission denied 错误解决方案 当执行 `git clone` 操作时,如果遇到 `Permission denied (publickey)` 错误,通常是因为 SSH 密钥配置不正确或未正确添加到远程仓库的授权中。以下是详细的解决方法: #### 1. 检查是否已生成 SSH 密钥 在开始之前,需要确认当前系统中是否存在 SSH 密钥文件。可以通过以下命令检查: ```bash cat ~/.ssh/id_rsa.pub ``` 如果提示文件不存在,则需要生成新的 SSH 密钥[^4]。 #### 2. 生成新的 SSH 密钥 如果尚未生成 SSH 密钥,可以使用以下命令生成: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述命令会提示输入保存密钥的路径和密码(可选)。默认情况下,密钥将保存在 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub` 中[^2]。 #### 3. 将公钥添加到远程仓库 生成公钥后,需要将其内容复制并添加到远程仓库的 SSH Key 配置中。具体步骤如下: - 打开公钥文件: ```bash cat ~/.ssh/id_rsa.pub ``` - 复制输出的内容。 - 登录到远程仓库(如 GitHub、GitLab 或 Gerrit),找到 SSH Keys 配置页面,将复制的公钥粘贴到指定区域,并保存[^3]。 #### 4. 测试 SSH 连接 为了确保 SSH 密钥配置正确,可以运行以下命令测试连接: ```bash ssh -T git@remote-repository-url ``` 例如,对于 GitHub,可以运行: ```bash ssh -T git@github.com ``` 如果配置成功,应该会看到类似以下的消息: ``` Hi username! You've successfully authenticated, but GitHub does not provide shell access. ``` #### 5. 解决其他可能的问题 如果仍然遇到问题,可以尝试以下方法: - 确保本地 SSH Agent 正常运行: ```bash eval "$(ssh-agent -s)" ``` - 添加私钥到 SSH Agent: ```bash ssh-add ~/.ssh/id_rsa ``` - 如果在 Linux 系统上遇到 `Could not open a connection to your authentication agent` 的错误,可以运行以下命令[^5]: ```bash ssh-agent bash ssh-add ~/.ssh/id_rsa ``` #### 6. 确认远程仓库地址 确保使用克隆地址是基于 SSH 的 URL 格式。例如: ```bash git clone git@github.com:username/repository.git ``` 而不是 HTTPS 格式的地址: ```bash git clone https://github.com/username/repository.git ``` 通过以上步骤,应该能够解决 `git clone Permission denied (publickey)` 的问题。 --- ### 示例代码 以下是一个完整的流程示例: ```bash # 检查是否已存在 SSH 密钥 cat ~/.ssh/id_rsa.pub # 如果不存在,生成新的 SSH 密钥 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 启动 SSH Agent eval "$(ssh-agent -s)" # 添加私钥到 SSH Agent ssh-add ~/.ssh/id_rsa # 测试连接 ssh -T git@remote-repository-url ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值