JSCH连接SSH报错:Invalid privatekey
JSCH连接SSH报错:Invalid privatekey
环境版本号
- jsch: jsch-0.1.54.jar
- SSH: OpenSSH_8.0p1, OpenSSL 1.0.2r 26 Feb 2019
- jdk: 1.8
报错截图
报错分析
从堆栈来看,在load过程就已经报错,还没有去连接,所以在服务端使用service sshd status
命令也不会有本次连接报错的原因。通过debug可以看到,它去加载了**文件,然后解析出错。
那么应该是SSH版本太高,工具产生的**格式不同了,导致解析失败,来看看**。首先是yum update可以更新到的最新的SSH 7.4:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,749E5AFD6F06C22EF6FD3AECCB6E540B
FwOlFOtCM+JH3EG7gzDOffkwLysiDCucdUeDZaK08rFSWzKpMwfPD/AZKNi0dqZR
省略若干行
dAzGWpRtuUIlIB97oXloovzwyMZGXWRy6yhLWJlpSYKSADXoEIQ8NuN+e33UEzeq
-----END RSA PRIVATE KEY-----
然后是不知道哪个瓜儿手动升级到的8.0 p1:
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDRomEs9d
省略若干行
J4vulabMBLFB9BjQYkOPXLShKpTnynFPMoLAdDG8h4Tf9XTBUStp1yXDUryveabJEgnRIW
/g==
-----END OPENSSH PRIVATE KEY-----
**中间的值具体什么套路还不懂,但是看首行已经看得出,一个是RSA,一个是OPENSSH的**了,那么解析不了就很正常了。
PS: 在此首先痛批网上说版本不兼容,让去升级jsch 0.1.55的,升级完也不好使。其次痛批不能解决的。
解决方法
修改**格式,让他变成RSA即可。
一种是像其他博客里说的,用工具进行修改。
一种是用低版本的的SSH工具生成**对,上传上去。【恰好,客户的环境就是没有低版本的~】
一种是生成**时指定格式,ssh-****** -m PEM -t rsa
,加上参数-m PEM
,生成的**对,就是RSA的了。【荐】
预装环境
如果你也是遇上了客户环境如此“先进”,而我们本地版本没有那么高的情况,无法复现,就需要升级SSH版本(包括ssl,省的他啰嗦),这里推荐这个博客 https://www.cnblogs.com/nmap/p/10779658.html 。我按照他的升级的,没出啥问题。
参数配置
升级环境后可能遇上ssh登录不上的问题,主要是通过service sshd status
查看报错信息。
那么我做过调整的参数主要有这些:
# 允许ROOT登录
PermitRootLogin yes
# 使用DNS,这个影响不大,好像改成yes可以加快连接
# UseDNS no
# 允许hundsun用户登录
AllowUsers hundsun
# 这个参数好像在ssh 8.0中已经废弃,不过加上也没事
RSAAuthentication yes
# 公钥认证开启
PubkeyAuthentication yes
# PAM认证,具体不懂,有人开启YES登录不了,有人不开登录不了
UsePAM yes
# 允许空密码,这个随意
PermitEmptyPasswords yes
上一篇: 一个简单到不能再简单的房产出售项目截片
下一篇: Linux常用命令
推荐阅读
-
JSCH连接SSH报错:Invalid privatekey
-
以太坊:MetaMask连接私有网络调用合约方法时报错: [ethjs-rpc] rpc error with payload Error: invalid sender
-
idea连接数据库报错:Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ property
-
详解Ubuntu20.04用Xshell通过SSH连接报错的服务问题
-
IDEA连接mysql报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope
-
IDEA连接mysql又报错!Server returns invalid timezone. Go to tab and set serverTimezone prope的问题
-
Spark 连接kafka报错: Error while fetching metadata with correlation id xx [topicName=INVALID_REPLICATIO]
-
jgitflow Mac下报错 Auth Fail和Invalid privateKey解决
-
jgitflow Mac下报错 Auth Fail和Invalid privateKey解决
-
出错-php使用ssh2时报错,Invalid MAC