java - 使用 SSHJ 和 ed25519 进行 SFTP 上传遇到关键问题

标签 java sftp sshj ed25519

我尝试使用 ed25519 身份验证设置 SFTP 上传,但不断收到此错误:

Exception in thread "main" java.lang.UnsupportedOperationException: Don't know how to decode key:ssh-ed25519

这是我的代码:

import java.io.File;
import java.io.IOException;

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.sftp.SFTPClient;
import net.schmizz.sshj.userauth.keyprovider.OpenSSHKeyFile;
import net.schmizz.sshj.xfer.FileSystemFile;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;

String username     = "scansionitesz"; 
String remoteDir    = "files";
String remoteFile   = "prova_delega.pdf";
String localDir     = "C:/Users/VERSIM/Desktop";

final SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(new PromiscuousVerifier());
ssh.connect(server);
try {
    File privateKey = new File(openSSHPrivateKey);
    KeyProvider keys = ssh.loadKeys(privateKey.getPath());

    OpenSSHKeyFile key = new OpenSSHKeyFile();

    key.init("-----BEGIN OPENSSH PRIVATE KEY-----\n" + 
            "my_private_key\n" + 
            "-----END OPENSSH PRIVATE KEY-----",
            "ssh-ed25519 my_public_key scansionitesz@tes" 
            );

    ssh.authPublickey(username,key);

    final SFTPClient sftp = ssh.newSFTPClient();
    try {
        sftp.put(new FileSystemFile(localDir + "/" + remoteFile), "/" + remoteDir);
    } finally {
        sftp.close();
    }
} finally {
    ssh.disconnect();
}

我错过了什么?

最佳答案

我猜您正在使用一些不支持 Ed25519 key 的旧版本 sshj。

自 0.15.0(2015 年 11 月)起就支持它们。

关于java - 使用 SSHJ 和 ed25519 进行 SFTP 上传遇到关键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256363/

相关文章:

java - 我在handleDisplayableEvent 中遇到异常。原因: LinkageError

java - appium - 选择父节点

java - NoClassDefFoundError:在Jenkins上使用SSHJ时,org/bouncycaSTLe/openssl/PEMParser

java - 安装 sshj 或其他 java 文件

java - 如何保持 SSH 连接可用?

java - 写入 XML 文件时出现 XMLStreamException

java - 如何从 AffineTransform 派生的形状对象中获取 'Get' 特定点

macos - 将本地编辑器与 Vagrant 一起使用

java - Apache Mina SSHD 认证和加密

java - 用Java计算远程文件的校验和