_由mfikes发表评论:
舍弃JGit+JSch的另一个原因是:JSch无法读取新的OpenSSH密钥格式,这些格式现在是macOS默认写入的。
以下是一个示例
$ ssh-keygen -f /tmp/foo
这创建了一个带有头的密钥
-----BEGIN OPENSSH PRIVATE KEY-----
如果你不这样做而是执行以下操作:
$ ssh-keygen -m PEM -f /tmp/bar
你将得到一个带有常规头部(和密钥格式)的密钥
-----BEGIN RSA PRIVATE KEY-----
为了说明最新的JSch无法读取这种新的密钥类型,注意当尝试读取<{{"/tmp/foo"}}时会出现{{"无效的私钥"}}错误
$ clj -Sdeps '{:deps {com.jcraft/jsch {:mvn/version "0.1.55"}}}'
Clojure 1.10.0
user=> (import (com.jcraft.jsch JSch KeyPair))
com.jcraft.jsch.KeyPair
用户=> (KeyPair加载(JSch.)"/tmp/foo")
执行错误(JSchException)在com.jcraft.jsch.KeyPair加载(KeyPair.java:664)。
无效的私钥:[B@485e36bc
用户=> (KeyPair加载(JSch.)"/tmp/bar")
#对象[com.jcraft.jsch.KeyPairRSA 0x38f116f6 "com.jcraft.jsch.KeyPairRSA@38f116f6"]