java Mina sftp_java – “找不到匹配的主机密钥类型” – Apache MINA SFTP服务器

博主在尝试使用Apache MINA在Java中搭建SFTP服务器时遇到了OpenSSH客户端连接失败的问题,错误信息显示因主机密钥算法不匹配导致谈判失败。客户端提供的是ecdsa-sha2等现代算法,而服务器仅支持ssh-dss。解决方案在于更新服务器支持更多的现代主机密钥算法。

我希望使用Apache MINA在

Java中设置SFTP服务器.

它似乎开始正常,但当我尝试使用OpenSSH客户端连接到它时,我得到:

$ssh localhost -p 2222

Unable to negotiate with ::1: no matching host key type found. Their offer: ssh-dss

$ssh -V

OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015

Java应用程序日志:

! java.lang.IllegalStateException: Unable to negotiate key exchange for server host key algorithms (client: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa / server: ssh-dss)

! at org.apache.sshd.common.session.AbstractSession.negotiate(AbstractSession.java:1279) ~[sshd-core-1.0.0.jar:1.0.0]

我的Maven依赖项是:

org.apache.sshd

sshd-sftp

0.11.0

org.apache.sshd

sshd-core

1.0.0

import org.apache.sshd.common.NamedFactory;

import org.apache.sshd.server.Command;

import org.apache.sshd.server.SshServer;

import org.apache.sshd.server.auth.UserAuth;

import org.apache.sshd.server.auth.UserAuthNoneFactory;

import org.apache.sshd.server.command.ScpCommandFactory;

import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;

import org.apache.sshd.sftp.subsystem.SftpSubsystem;

private void startSftpServer() throws IOException {

SshServer sshd = SshServer.setUpDefaultServer();

sshd.setPort(2222);

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(

new File("hostkey.ser")));

List> userAuthFactories = new ArrayList>();

userAuthFactories.add(new UserAuthNoneFactory());

sshd.setUserAuthFactories(userAuthFactories);

sshd.setCommandFactory(new ScpCommandFactory());

List> namedFactoryList = new ArrayList>();

namedFactoryList.add(new SftpSubsystem.Factory());

sshd.setSubsystemFactories(namedFactoryList);

sshd.start();

}

如何向服务器添加更多现代主机密钥算法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值