通过.pub格式的公共密钥创建JSch HostKey实例

我正在尝试使用JSch将文件从Windows机器发送到Linux机器。因此,我将主机公用密钥从Linux计算机复制到Windows计算机,然后将密钥添加到了Windows

XP HostKeyRepository。但是由于某种原因,我得到了“无效的密钥类型”异常。这是我的代码:

HostKeyRepository repo = jsch.getHostKeyRepository();

File file = new File("D:\\Uni\\Arbeit\\ssh_host_rsa_key.pub");

byte[] HK = Files.readAllBytes(file.toPath());

Session session=jsch.getSession(user, host, 22);

session.setPassword(password);

HostKey hk = new HostKey(null, HK);

repo.add(hk, null);

session.connect();

回答:

.pub文件具有以下格式:

<type> <base64-encoded-public-key> <comment>

善有善报的HostKey构造是唯一的公钥部分,以二进制形式(不base64编码)。

使用JSch Util.fromBase64()base64-encoded-public-key零件转换为byte[]

static byte[] fromBase64(byte[] buf, int start, int length)


您还可以在中检查known_hosts文件解析的JSch实现KnownHosts.setKnownHosts(InputStream input)

known_hosts文件的格式与.pub文件相似,不同之处在于文件hostname的前面有一个附加部分,comment通常不包括:

<hostname> <type> <base64-encoded-public-key> [comment]

请注意,如果您知道要解析文件的一种特定格式,则您的实现不必如此复杂。

以上是 通过.pub格式的公共密钥创建JSch HostKey实例 的全部内容, 来源链接: utcz.com/qa/404676.html

回到顶部