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

SSH与SCP正常但Ant部署失败:无效私钥问题求助

问题原因及解决方法

核心原因

  • 你使用的Ant依赖的JSch库版本过低,不支持新版OpenSSH格式的私钥(即开头为-----BEGIN OPENSSH PRIVATE KEY-----的密钥)。本地SSH/SCP客户端是系统自带的,支持新格式,但Ant的sshexec任务依赖的JSch库无法识别该格式,导致加载密钥失败,抛出invalid privatekey错误。
  • 同事能正常操作,大概率是他们的私钥为旧RSA格式(开头-----BEGIN RSA PRIVATE KEY-----),或者其Ant环境中的JSch版本支持新格式。

解决方法

方法1:转换私钥为旧RSA格式

在本地终端执行以下命令,将现有私钥转换为JSch兼容的旧格式:

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

执行时会提示输入原私钥密码(若有设置),之后可设置新密码或直接回车保留原密码。转换完成后,私钥开头会变为-----BEGIN RSA PRIVATE KEY-----,JSch即可正常加载。

方法2:升级JSch依赖包

找到Ant安装目录下的lib文件夹,替换其中的jsch.jar为支持OpenSSH格式的新版本(推荐JSch 0.1.55及以上):

  1. 删除旧的jsch.jar文件
  2. 下载新版JSch jar包,放入lib目录
  3. 重新执行Ant部署任务

方法3:指定密钥类型(版本适配前提下)

若你的Ant版本支持,可在sshexec配置中添加keytype参数指定密钥类型:

<sshexec host="${scp.hostname}"
         username="${scp.user}"
         keyfile="${scp.keyfile}"
         keytype="rsa"
         trust="true"
         command="mkdir -p ${projects.home}/${project.name}/${target.dir}" />

注:此方法需Ant和JSch版本均支持该参数,优先推荐前两种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:05:28