在我的ColdFusion应用程序中,我使用了Java库jsch。SFTP服务器是BitVise个人版(用于测试)。当前,我正在强制使用stricthostkeychecking
,为此,我使用下面的方法从文件名创建一个主机密钥存储库。
public void setKnownHosts(String filename)
throws JSchException
有没有办法设置服务器的指纹(像2b:16:18:83:7b:c6:5e:49:f2:f0:8e:e2:dc:64:da:1a
)而不是使用JSch库中的公钥?
publickey引用示例,以备需要:
本地主机ssh-rsa AAAAB3NZAC1YC2EAAAADAQABAAABGQQCKTHVR7QZV+HVOJPALTETAE9UVGSAOLQF/XGKQGOK8EELOZ+3ZITJFIYHXOSIQVM4NFKCIASALPWYQWCWDRF8CAAMGJV8P4NY6U2PDAMHSCCCYU/DUOSV26SC2HRALSZHU3OYG3+K1L5QGRDYQ8OVZAXF16I5SITFAS4EARMTRHHRATPYREZDA52GML7GRHJBDTOTMUSV2RPAG+ASASAS/SE4QK6UGTME WG2A9JRILCAMWL/DSFLJJCLAOZZ1GG8BFCQADEF1IUWKJIOTPYT08LOQZLXXSFLCKY/6DICFZW9E2YRAXHMOHYZPEXIF/IA79EX8AHNAYVKDOH42MLX+CYB3L3THZAO0G+NAJKLOJN8KYJ9IOYMQDYXNGLA8M2E+UNQ9OOZNJ6ZZOPNLSPQ2RYGAGOW2TCHYFH+91S0=
实现您自己的HostKeyRepository
接口,使Check
方法将从Key
参数计算的指纹与您已知的指纹进行比较。
public class HostKeyFingerprintRepository implements HostKeyRepository
{
int check(String host, byte[] key)
{
// Based on KeyExchange.getFingerPrint
Class c = Class.forName(jsch.getConfig("md5"));
HASH hash = (HASH)(c.newInstance());
// Based on Util.getFingerPrint
hash.init();
hash.update(key, 0, key.length);
byte[] foo=hash.digest();
StringBuffer sb=new StringBuffer();
int bar;
for(int i=0; i<foo.length;i++){
bar=foo[i]&0xff;
sb.append(chars[(bar>>>4)&0xf]);
sb.append(chars[(bar)&0xf]);
if(i+1<foo.length)
sb.append(":");
}
String fingerprint = sb.toString();
if (fingerprint.equals("2b:16:18:83:7b:c6:5e:49:f2:f0:8e:e2:dc:64:da:1a"))
{
return OK;
}
else
{
return NOT_INCLUDED;
}
}
// dummy implementations of the other methods
}
使用session.setHostKeyRepository
将您的实现与会话相关联。
我们必须通过配置用户名、密码和公钥,使用代理服务器internet.ford.com从应用程序连接到外部SFTP服务器。 预期与外部SFTP服务器的连接成功。
问题内容: 我正在尝试了解采取OpenSSH公钥的步骤,如下所示: SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAqmEmDTNBC6O8HGCdu0MZ9zLCivDsYSttrrmlq87 / YsEBpvwUTiF3UEQuFLaq5Gm + dtgxJewg / UwsZrDFxzpQhCHB6VmqrbKN2hEIkk / HJvCnAmR1ehXv8n2BWw
我有一个EVP_PKEY结构中的RSA公钥(从PEM文件加载,以------开始公钥------)。现在,我希望能够使用OpenSSL API显示代码中该密钥的指纹。(目的是允许操作员在信任JWT之前使用RS256验证其密钥)。 不幸的是,到目前为止,我发现的所有资源要么在命令行上使用ssh-keygen,要么使用X.509证书的指纹,但不使用公钥。 那么,如何使用OpenSSL API获取存储在
问题内容: 我正在使用jsch从服务器下载文件,下面是我的代码。 com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2629) at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:977) at com.jcraft.jsch.ChannelSftp.get(Channe
我试图设置Spring引导云配置服务器与ssh私钥文件和获取:ucom.jcraft.jsch.JSchExc0019: USERAUTH失败我的application.properties文件: 我得到了。 我怀疑这是由于钥匙放错了。如何把ssh键Spring启动application.properties文件?
我们正在尝试使用JSCH从远程服务器下载文件。尝试时,两台服务器之间已经建立了SFTP密钥交换 它在不要求任何密码的情况下成功连接。但在java代码中,当我们尝试使用JSCH连接时,会出现无效私钥异常。 我所做的代码如下所示 编辑: im使用的JSCH版本是0.1.54 私钥的开头就像 我甚至尝试将私钥转换为openssh格式,但遇到了一些异常 如果我从命令中删除-f,它会工作,但我相信该文件没有