java - 使用 Java JSch 进行 SFTP 文件传输

标签 java ssh sftp file-transfer jsch

这是我的代码,它在远程服务器上检索文件的内容并显示为输出。

package sshexample;

import com.jcraft.jsch.*;
import java.io.*;

public class SSHexample 
{
public static void main(String[] args) 
{
    String user = "user";
    String password = "password";
    String host = "192.168.100.103";
    int port=22;

    String remoteFile="sample.txt";

    try
    {
        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, port);
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");
        System.out.println("Establishing Connection...");
        session.connect();
        System.out.println("Connection established.");
        System.out.println("Creating SFTP Channel.");
        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();
        System.out.println("SFTP Channel created.");
        InputStream out= null;
        out= sftpChannel.get(remoteFile);
        BufferedReader br = new BufferedReader(new InputStreamReader(out));
        String line;
        while ((line = br.readLine()) != null) 
        {
            System.out.println(line);
        }
        br.close();
        sftpChannel.disconnect();
        session.disconnect();
    }
    catch(JSchException | SftpException | IOException e)
    {
        System.out.println(e);
    }
}
}

现在如何实现这个文件复制到本地主机的程序,以及如何从本地主机复制文件到服务器。

这里如何使任何格式的文件的文件传输工作。

最佳答案

使用 JSch 通过 SFTP 上传文件最简单的方法是:

JSch jsch = new JSch();
Session session = jsch.getSession(user, host);
session.setPassword(password);
session.connect();

ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();

sftpChannel.put("C:/source/local/path/file.zip", "/target/remote/path/file.zip");

类似的下载:

sftpChannel.get("/source/remote/path/file.zip", "C:/target/local/path/file.zip");

您可能需要 deal with UnknownHostKey exception .

关于java - 使用 Java JSch 进行 SFTP 文件传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108923/

相关文章:

java - SQL 查询性能、存档与状态更改

java - 小部件的 ScrollView

java - 如何使用 Curator 检查 Zookeeper 服务器是否已启动?

ssh - 重置 ssh key 后的并发症

visual-studio-2010 - 使用 visual studio 2010 部署到 SFTP

c# - 什么时候(不)两个具有相同内容的字符串共享相同的内存?

linux - ssh 脚本返回 255 错误

php - 无法让 phpseclib 连接 - 错误 10060

azure - 使用多个存储帐户配置 Azure SFTP 网关

.net - 使用 WinSCP .NET 的方法未找到异常 (EventWaitHandle..ctor)