Java 使用jsch和公钥连接sftp

Java 使用jsch和公钥连接sftp,java,sftp,jsch,public-key,Java,Sftp,Jsch,Public Key,我使用jsch从java连接sftp服务器,并将文件发送到特定目录 private static boolean enviarCSV(String localFile) throws IOException, JSchException, SftpException { logger.info("Enviando fichero a maquina destino.."); ChannelSftp channelSftp = setupJsch();

我使用jsch从java连接sftp服务器,并将文件发送到特定目录

    private static boolean enviarCSV(String localFile) throws IOException, JSchException, SftpException {

        logger.info("Enviando fichero a maquina destino..");
        ChannelSftp channelSftp = setupJsch();
        channelSftp.connect();

        String remoteDir = Config.getParametro("wssf.conf.remoteDir");
        channelSftp.put(localFile, remoteDir + localFile);

        logger.info("Enviado con exito!");

        channelSftp.exit();

        return false;

    }


    private static ChannelSftp setupJsch() throws JSchException {
        JSch jsch = new JSch();

        String user = Config.getParametro("wssf.conf.login.usuario");
        String password = Config.getParametro("wssf.conf.login.password");
        String remoteHost = Config.getParametro("wssf.conf.remotehost");

        Session jschSession = jsch.getSession(user, remoteHost, 40020);
        jschSession.setConfig("StrictHostKeyChecking", "no");
        jschSession.setPassword(password);
        jschSession.connect();
        return (ChannelSftp) jschSession.openChannel("sftp");
    }
我需要使用公钥来连接SFTP服务器。我在安全方面是个新手,我不知道怎么做,另外我只看到使用私钥的例子,但我想我不需要它,是吗

如果你能帮助我,我将不胜感激
谢谢,钥匙是成对的。一个私人,一个公共

要使用您的公钥(您可以自由共享)进行身份验证,您需要向对方证明您实际上也拥有匹配的私钥(因为任何人都可以拥有您的公钥,但只有您拥有私钥)

您可以通过使用您的私钥加密或唱歌来实现这一点,私钥可以通过您的公钥进行验证


所以对于“公钥身份验证”,您实际上也必须使用私钥。。。并且可以使用这些例子:-)

你好,Jan,谢谢你的回答,但是我需要使用私钥和公钥…,但是如果我只需要连接并发送文件,而服务器不是我的,我不明白为什么我需要使用私钥。。。无论如何,我想我需要使用类似的东西:addIdentity(String prvkey,String pubkey,byte[]passphrase)用于pubkey身份验证,生成一个密钥对(private/public),并将公钥提供给服务器(或管理员…)。然后使用密钥对登录。服务器durely不允许“任何人”上传文件,所以你必须先证明你是自己