我想模拟 ssh 服务器来传输文件。为此,我想使用 Apache Mina SSHD。对于系统中的传输,请使用 JSch。用私钥。
JSch 客户端代码。
JSch jSch = new JSch();
jSch.addIdentity(privateKeyPath, passPhrase);
Session session = jSch.getSession(usernamePlans, remoteHost);
session.setHost(remoteHostPort);
config.setProperty("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setUserInfo(new StorageUserInfo(passPhrase));
session.connect();
Apache Mina SSHD 代码
sshd = SshServer.setUpDefaultServer();
sshd.setPort(22999);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(privateKeyPath));
sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
public boolean authenticate(String username, String password, ServerSession session) {
// TODO Auto-generated method stub
return true;
}
});
CommandFactory myCommandFactory = new CommandFactory() {
public Command createCommand(String command) {
System.out.println("Command: " + command);
return null;
}
};
sshd.setCommandFactory(new ScpCommandFactory(myCommandFactory));
List<NamedFactory<Command>> namedFactoryList = new ArrayList<>();
namedFactoryList.add(new SftpSubsystem.Factory());
sshd.setSubsystemFactories(namedFactoryList);
sshd.start();
谁能帮我连接 JSch 和 Apache Mina SSHD 以传输文件?
堆栈跟踪
com.jcraft.jsch.JSchException: java.net.SocketException: Invalid argument or cannot assign requested address
Caused by: java.net.SocketException: Invalid argument or cannot assign requested address