【发布时间】:2021-11-28 10:58:13
【问题描述】:
我正在尝试使用 SSHJ 修改 SSH 客户端,使其仅允许使用某些密码。我在属性文件中有类似这样的属性:
sftp.transport.ciphers = aes256-gcm,aes256-ctr,aes256-etcera
sftp.mac.ciphers = hmac-sha3-512,...
使用 Jsch 限制使用的密码是这样的:
session.setConfig("cipher.s2c", sftpTransportCiphers);
session.setConfig("cipher.c2s", sftpTransportCiphers);
我一直在梳理 SSHJ 的文档,在这一点上,我绕了一圈,可能错过了一些东西,所以最好问问。我没有看到一种干净的方法来获取逗号分隔的字符串并将其转换为 SSHJ 可以识别的密码列表。
非常感谢一个与上述 JSCH 版本类似配置的 SSHJ 的 SSHClient 的简单示例。
【问题讨论】:
-
你检查过
net.schmizz.sshj.DefaultConfig的班级吗?它定义了一个算法工厂列表,例如用于密钥交换。您可能必须从此 DefaultConfig 派生自己的配置类。 -
@Robert Argh 这个选项让我完全忘记了。目前,我已经使用 DefaultConfig 组合了一个有点 hacky 的解决方案,是的。我想我可能需要从中派生出我自己的并添加一些逻辑来更优雅地将属性字符串转换为允许的密码列表。现在我的解决方案是有点臃肿的 stream=>split=>filter=>map=>collect stream 语句。
标签: java encryption ssh sshj