web-dev-qa-db-ja.com

Java JSchを使用したSFTPファイル転送

これは、リモートサーバー上にあるファイルのコンテンツを取得し、出力として表示するコードです。

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);
    }
}
}

次に、ファイルがローカルホストにコピーされるこのプログラムを実装する方法と、ローカルホストからサーバーにファイルをコピーする方法。

ここでは、あらゆる形式のファイルのファイル転送を機能させる方法を説明します。

24
MAHI

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");

UnknownHostKey例外に対処

16
Martin Prikryl

使用法:

sftp("file:/C:/home/file.txt", "ssh://user:pass@Host/home");
sftp("ssh://user:pass@Host/home/file.txt", "file:/C:/home");

実装

7

以下のコードは私のために働く

   public static void sftpsript(String filepath) {

 try {
  String user ="demouser"; // username for remote Host
  String password ="demo123"; // password of the remote Host

   String Host = "demo.net"; // remote Host address
  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("I:/demo/myOutFile.txt", "/tmp/QA_Auto/myOutFile.Zip");
  sftpChannel.disconnect();
  session.disconnect();
 }catch(Exception ex){
     ex.printStackTrace();
 }
   }
3
Shubham Jain