You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下Gradle用org.hidetake.ssh遇JSchException: Auth fail

解决Ubuntu 22.04升级后Gradle org.hidetake.ssh插件认证失败(Auth fail)问题

我将云服务器从Ubuntu 20.04升级到22.04后,使用org.hidetake.ssh插件执行Gradle远程上传Jar包任务时失败,报错:

com.jcraft.jsch.JSchException: Auth fail

我的ssh.run任务配置如下:

remotes {
    myServer {
        host = 'x.x.x.x'
        port = 22
        user = 'ubuntu'
        identity = file('d:/a.pem') 
        knownHosts = allowAnyHosts
    }
}

原因分析

Ubuntu 22.04默认禁用了使用SHA-1签名的RSA密钥认证,而org.hidetake.ssh插件依赖的JSch库默认可能仍使用旧的签名算法,导致服务器拒绝认证请求。

解决方法

方案1:临时启用服务器端RSA-SHA1兼容(不推荐长期使用)

修改SSH服务配置,允许旧的RSA算法:

  1. 编辑sshd配置文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 添加或修改以下配置项:
    PubkeyAcceptedAlgorithms +ssh-rsa
    
  3. 重启SSH服务:
    sudo systemctl restart sshd
    

方案2:生成ED25519密钥替换旧RSA密钥(推荐)

ED25519是更安全高效的现代密钥算法,Ubuntu 22.04默认支持:

  1. 本地生成ED25519密钥:
    ssh-keygen -t ed25519 -f d:/a_ed25519.pem
    
  2. 将公钥(d:/a_ed25519.pem.pub)内容添加到服务器的~/.ssh/authorized_keys文件中
  3. 修改Gradle配置里的identity指向新密钥:
    identity = file('d:/a_ed25519.pem')
    

方案3:升级JSch库或SSH插件版本

org.hidetake.ssh插件依赖的旧版JSch不支持RSA-SHA2算法,可升级依赖:

  1. 在项目的build.gradle中强制升级JSch版本:
    buildscript {
        dependencies {
            classpath 'com.jcraft:jsch:0.1.55' // 此版本支持RSA-SHA2签名算法
        }
    }
    
  2. 或者升级org.hidetake.ssh插件到最新版本,新版本可能已经适配了Ubuntu 22.04的算法要求

验证步骤

修改完成后,先手动测试SSH连接是否正常:

ssh ubuntu@x.x.x.x -i d:/your_new_key.pem

确认能成功登录后,再执行Gradle上传任务。

内容的提问来源于stack exchange,提问作者DKWoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:15:44