Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于测试的内存/嵌入式SFTP服务器,具有Java中的私钥身份验证_Java_Unit Testing_Authentication_Ssh_Apache Mina - Fatal编程技术网

用于测试的内存/嵌入式SFTP服务器,具有Java中的私钥身份验证

用于测试的内存/嵌入式SFTP服务器,具有Java中的私钥身份验证,java,unit-testing,authentication,ssh,apache-mina,Java,Unit Testing,Authentication,Ssh,Apache Mina,该场景是,我需要为执行SFTP文件传输的应用程序编写测试,并且我需要一个带有私钥身份验证实现的内存中/嵌入式SFTP服务器,这样我就可以测试文件传输是否可以与带有私钥(.pem)文件身份验证的嵌入式/内存中服务器正常运行 我已经浏览了互联网的内脏,最近的一次是 目前,我正在使用用户名和密码身份验证,如下所示: SshServer sshd = SshServer.setUpDefaultServer(); sshd.setPort(22999); sshd.setKeyPairProvider

该场景是,我需要为执行SFTP文件传输的应用程序编写测试,并且我需要一个带有私钥身份验证实现的内存中/嵌入式SFTP服务器,这样我就可以测试文件传输是否可以与带有私钥(.pem)文件身份验证的嵌入式/内存中服务器正常运行

我已经浏览了互联网的内脏,最近的一次是

目前,我正在使用用户名和密码身份验证,如下所示:

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 void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator) {
    this.publickeyAuthenticator = publickeyAuthenticator;
}
我试图找到一种实现私钥身份验证的方法,但似乎只有一个身份验证程序,但这是一个公钥身份验证程序,如下所示:

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 void setPublickeyAuthenticator(PublickeyAuthenticator publickeyAuthenticator) {
    this.publickeyAuthenticator = publickeyAuthenticator;
}

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

您实际上在寻找一个公钥验证器

客户端/用户使用其公钥进行身份验证。服务器从未看到私钥


因此,您可以实现来检查的
PublicKey key
参数是否与您在客户端中用于身份验证的密钥对的公共部分匹配


您可以从使用类配置文件的开始

你的意思是我可以使用jsch登录和“私钥”,如果我将相应的公钥添加到服务器的已知密钥中,那么它就可以做到这一点了?客户端使用“私钥”而不是公钥进行身份验证,而身份验证的对侧只看到公钥。因此,在客户端,您可以看到服务器密钥对的公共部分(称为主机密钥)。在服务器端,服务器只看到用户密钥对的公共部分。用户当然也需要私钥,但您无法在服务器上验证私钥,因为私钥没有发送到服务器(这就是为什么它是私钥)。老实说,我不完全理解它。如果您能给我指一个链接,解释服务器看到的内容,如果客户端提供
私钥