通过.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