作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 JSch 将文件从 Windows 机器发送到 Linux 机器。因此,我将主机公钥从 Linux 机器复制到我的 Windows 机器,并将该 key 添加到我的 HostKeyRepository
。但出于某种原因,我收到“无效 key 类型”异常。这是我的代码:
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
constructor 的内容只是公钥部分,采用二进制形式(不是 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]
请注意,如果您知道要解析文件的一种特定格式,则您的实现不必像他们那样复杂。
因此请阅读 File
中的行字符串,删除 <type>
和 <comment>
并使用此表达式(取自 KnownHosts.setKnownHosts
,关键是 <base64-encoded-public-key>
部分):
Util.fromBase64(Util.str2byte(key), 0, key.length())
关于java - 从 .pub 格式的公钥创建 JSch HostKey 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29604333/
我是一名优秀的程序员,十分优秀!