我希望使用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();
}
如何向服务器添加更多现代主机密钥算法?
博主在尝试使用Apache MINA在Java中搭建SFTP服务器时遇到了OpenSSH客户端连接失败的问题,错误信息显示因主机密钥算法不匹配导致谈判失败。客户端提供的是ecdsa-sha2等现代算法,而服务器仅支持ssh-dss。解决方案在于更新服务器支持更多的现代主机密钥算法。

2693

被折叠的 条评论
为什么被折叠?



