在 memory/embedded SFTP 服务器中,用于在 Java 中使用私钥身份验证进行测试

In memory/embedded SFTP server for test with private key authentication in Java

场景是我需要为执行 SFTP 文件传输的应用程序编写测试,并且我需要一个 in memory/embedded 具有私钥身份验证实现的 SFTP 服务器 所以我可以测试文件传输 运行 可以使用带有私钥 (.pem) 文件身份验证的嵌入式/内存服务器。

我翻遍了互联网,最接近的是 Apache Mina Server as discussed in this S.O. question

目前我使用的用户名和密码验证如下:

SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(22999);

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider());
sshd.setPasswordAuthenticator(new PasswordAuthenticator() {

    public boolean authenticate(String username, String password,
                                ServerSession session) {
        // TODO Auto-generated method stub
        return true;
    }
});

我试图找到一种实现私钥身份验证的方法,但似乎只有一个身份验证器,但那是一个 public 密钥身份验证器,如下所示:

public void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator) {
    this.publickeyAuthenticator = publickeyAuthenticator;
}

有没有办法用 Apache Mina 实现私钥验证器?或者如果不可能的话,还有其他模拟 SFTP 服务器可以用于我的测试场景吗?

您实际上是在寻找 public 密钥验证器

client/user 使用其 public 密钥进行身份验证。服务器永远不会看到私钥。


所以你实现了 PublickeyAuthenticator 接口来检查 authenticate 方法的 PublicKey key 参数是否匹配你在你的文件中使用的密钥对的 public 部分客户端进行身份验证。

您可以从使用 OpenSSH .ssh/authorized_keys 类配置文件的 AuthorizedKeysAuthenticator 实现开始。