1. ホーム

[解決済み】SFTPでサーバーからファイルを取得する方法は?

2022-04-04 10:52:43

質問

Javaを使用して、SFTP(FTPSとは異なる)を使用してサーバーからファイルを取得しようとしています。どうすればよいでしょうか?

解決方法を教えてください。

を見ることを検討するのも一つの方法です。 JSch ライブラリ . JSchは、Eclipse、Ant、Apache Commons HttpClientなど、いくつかの大規模なオープンソースプロジェクトで好んで使用されているライブラリのようです。

これはユーザー/パスと証明書ベースのログインの両方をうまくサポートしていますし、他のすべてのおいしいSSH2機能のホストもサポートしています。

SFTPを使った簡単なリモートファイル取得を紹介します。エラー処理は読者のために練習として残してあります :-)

JSch jsch = new JSch();

String knownHostsFilename = "/home/username/.ssh/known_hosts";
jsch.setKnownHosts( knownHostsFilename );

Session session = jsch.getSession( "remote-username", "remote-host" );    
{
  // "interactive" version
  // can selectively update specified known_hosts file 
  // need to implement UserInfo interface
  // MyUserInfo is a swing implementation provided in 
  //  examples/Sftp.java in the JSch dist
  UserInfo ui = new MyUserInfo();
  session.setUserInfo(ui);

  // OR non-interactive version. Relies in host key being in known-hosts file
  session.setPassword( "remote-password" );
}

session.connect();

Channel channel = session.openChannel( "sftp" );
channel.connect();

ChannelSftp sftpChannel = (ChannelSftp) channel;

sftpChannel.get("remote-file", "local-file" );
// OR
InputStream in = sftpChannel.get( "remote-file" );
  // process inputstream as needed

sftpChannel.exit();
session.disconnect();