_评论者: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"}} 时出现的 {{invalid privatekey}} 错误
$ 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
user=> (KeyPair/load (JSch.) "/tmp/foo")
执行错误(JSchException)在 com.jcraft.jsch.KeyPair/load (KeyPair.java:664)。
invalid privatekey: [B@485e36bc
user=> (KeyPair/load (JSch.) "/tmp/bar")
#object[com.jcraft.jsch.KeyPairRSA 0x38f116f6 "com.jcraft.jsch.KeyPairRSA@38f116f6"]