Spring Cloud Config下reject HostKey: gitee.com问题,及You‘re using an RSA key withSHA-1问题的解决

 解决思路如下:

1 修改rsa加密方式,操作步骤如下:

--进入当前用户的home目录
--删除.ssh 目录
$ rm -rvf .ssh

--如果要使用SpringCloudConfig的免密登录,则使用如下命令生成秘钥和公钥
ssh-keygen -m PEM -t rsa -b 4096 -f -C a7810222@qq.com

如果是windows系统,则会在如下图位置生成id_rsa,id_rsa.pub,后两个文件是第一次使用git clone + git地址后自动产生的文件,如果要在SpringCloudConfig中使用默认的系统配置,则需要先git clone一下:

然后需要在gitee或github上配置公钥,具体配置可以参考Git进阶系列2. Gitee以及Github使用详细教程_每天都要努力的小颓废呀的博客-优快云博客

之后可能会出现spring cloud ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client问题,因为Spring Cloud Config Server使用org.eclipse.jgit库进行git操作,这里的问题是,该库的版本较久,不支持较新版本的RSA密钥(sha2-256 / sha2-512)。

com.jcraft.jsch有一个分支,实现了Github接受的较新版本的RSA,下面是我做的改动。

对pom.xml进行修改:

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
                <!-- 不引入这个较旧的、没有维护的库,因为该版本不支持较新版本的RSA加密 -->
            <exclusions>
                <exclusion>
                    <groupId>com.jcraft</groupId>
                    <artifactId>jsch</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
<!--        该版本支持较新版本的RSA(sha2-256 / sha2-512) -->
        <dependency>
            <groupId>com.github.mwiede</groupId>
            <artifactId>jsch</artifactId>
            <version>0.2.0</version>
        </dependency>

 还得添加一个shim配置类来解决这个问题:

package com.hashnode.config;

import com.jcraft.jsch.JSch;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JschConfig {
    //Shim to fix the way jGit configures JSch
    static{
        JSch.setConfig("signature.rsa", "com.jcraft.jsch.jce.SignatureRSA");
    }

}

对applicaiton.yml做如下配置:

server:
  port: 3344

spring:
  application:
    name:  cloud-config-center #注册进Eureka服务器的微服务名
  cloud:
    config:
      server:
        git:
#          以下两步均需要在idea的插件中配置gitee
          # 方式1 通过ssh登录
#          uri: git@github.com:GuoWeiChi/turorial-spring-cloud-config.git #GitHub上面的git仓库名字
          uri: git@gitee.com:codinginn/turorial-spring-cloud-config.git #Gitee上面的git仓库名字
          #          ###搜索目录
          search-paths:
            - turorial-spring-cloud-config
          # 方式2 通过账号登录
#          uri: https://gitee.com/codinginn/turorial-spring-cloud-config.git 
#          search-paths:
#            - turorial-spring-cloud-config
#          username: 你自己的登录用户名
#          password: 登录密码

####读取分支
        label: master



然后即可运行项目,完成访问:

<think>我们正在解决Gitee仓库403错误无法访问的问题。403错误通常表示“禁止访问”,即服务器理解请求但拒绝授权。可能的原因包括权限不足、身份验证问题、IP限制等。结合用户提供的引用信息(尽管主要是关于其他问题的,但我们可以借鉴其中的思路),我们可以从以下几个方面排查:1.身份验证问题:确保你有访问该仓库的权限,并且使用了正确的凭证(用户名和密码,或token)。2.网络问题:如引用[1]中提到的“无法解析主机名”,检查网络连接和DNS设置,确保可以解析gitee.com。3.SSL证书问题:如引用[2]中提到的“SSL证书问题”,检查本地证书是否有效,或者尝试关闭SSL验证(不推荐,仅用于测试)。4.仓库URL错误:确认仓库URL是否正确。5.访问权限变更:仓库可能已设置为私有,或者你的账户权限被修改。具体步骤:步骤1:检查仓库URL是否正确。确保URL拼写无误。步骤2:检查账户权限。如果你使用的是命令行(如Git),尝试使用以下方式提供凭证:使用HTTPS方式克隆时,需要输入用户名和密码。如果开启了两步验证,可能需要使用个人访问令牌(PAT)代替密码。步骤3:生成并使用个人访问令牌(PAT)。-登录Gitee,进入设置->私人令牌,生成一个令牌(token)。-在克隆或推送时,使用令牌作为密码。例如:https://username:your_token@gitee.com/username/repo.git步骤4:检查网络连接和代理设置。-尝试pinggitee.com,看是否能够连通。-如果你使用了代理,确保Git正确配置了代理。例如:gitconfig--globalhttp.proxyhttp://proxy.example.com:port如果需要取消代理:gitconfig--global--unsethttp.proxy步骤5:如果是SSL证书问题,可以暂时关闭SSL验证(仅用于测试,之后应恢复):gitconfig--globalhttp.sslVerifyfalse注意:这会导致安全性降低,测试后应重新开启(gitconfig--globalhttp.sslVerifytrue)步骤6:检查是否有IP限制。仓库可能设置了IP白名单,而你的IP不在其中。如果以上步骤无法解决,可以尝试使用SSH方式(如果你已经配置了SSH密钥):1.生成SSH密钥(如果还没有):ssh-keygen-trsa-C"your_email@example.com"2.将公钥(~/.ssh/id_rsa.pub)添加到Gitee的SSH公钥设置中。3.将仓库URL切换为SSH格式(如:git@gitee.com:username/repo.git)4.然后尝试克隆或推送。如果问题仍然存在,请检查仓库的状态(是否被删除或归档)以及账户状态(是否被冻结)。注意:403错误也可能是暂时性的,比如服务器端限制了访问频率。等待一段时间后再重试。根据引用中其他问题解决思路,我们可以类比处理。例如,引用[3]中提到的“无法打开本地会话”可能类似于我们的权限问题,引用[4]中的超时可能提示我们要检查操作是否因为超时而被拒绝。尝试上述步骤后,通常可以解决403问题。</think> 针对Gitee仓库403访问错误的解决方案,以下是系统性排查步骤: ### 1. **检查账户权限** - ✅ 确认你的Gitee账户有该仓库的访问权限(至少为**报告者**角色) - 尝试访问仓库URL:`https://gitee.com/用户名/仓库名` (若网页返回403,证明权限不足[^1]) ### 2. **凭证认证问题** - 🔑 命令行操作时需提供有效凭据: ```bash git clone https://用户名:密码@gitee.com/用户名/仓库.git ``` - 若开启**两步验证**,需使用[个人访问令牌(PAT)](https://gitee.com/profile/personal_access_tokens)替代密码 ### 3. **SSH密钥配置** 1. 生成新密钥: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` 2. 将公钥`id_ed25519.pub`内容添加到[Gitee SSH公钥管理](https://gitee.com/profile/sshkeys) 3. 测试连接: ```bash ssh -T git@gitee.com # 成功提示:Hello XXX! You've successfully authenticated ``` ### 4. **网络环境检查** - 🌐 验证DNS解析(避免引用[1]的错误): ```bash nslookup gitee.com # 应返回可用IP ``` - 🔒 检测SSL证书(解决引用[2][4]的证书问题): ```bash openssl s_client -connect gitee.com:443 # 查看证书链是否完整 ``` ### 5. **仓库状态排查** - 通过网页确认仓库: - 是否设置为**私有** - 是否被**封禁/归档** - 是否存在**IP白名单限制**(企业版功能) ### 6. **临时解决方案** - 强制刷新本地凭据缓存: ```bash git credential reject # 删除缓存凭证 git config --unset credential.helper ``` > **关键操作建议**:优先使用**SSH协议**访问(`git@gitee.com:用户名/仓库.git`),比HTTPS更稳定且避免证书问题[^2]。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

潮浪之巅

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值