あるLinuxシステムから別のLinuxシステムにファイルをコピーするJavaコード

あるLinuxシステムから別のLinuxシステムにファイルをコピーするJavaコード

リモートLinuxシステムにファイルをコピーするためのJavaコードを探しています。私は動作するようにコマンドをRuntime.getRuntime().exec()渡そうとしましたが、プログラムを実行するたびにリモートシステムパスワードを要求します。scp私はこのような状況を避けたい。

このライブラリを見ましたJsch。これを使用してリモートシステムにログインできますが、ファイルをリモートシステムにコピーすることはできません。ログイン後にscpホストで操作を実行できますが、この場合でもホストシステムのユーザー名とパスワードが必要です。ただし、リモートシステムに関する情報のみがあります。

ベストアンサー1

linuxこのコードスニペットを使用してファイルを別のコンピュータにコピーできます。

JSch jsch = new JSch();
Session session = null;
session = jsch.getSession("username","hostname",22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
    session.connect();
ChannelSftp channel = null;
channel = (ChannelSftp)session.openChannel("sftp");
channel.connect();
    File localFile = new File("localfilepath");
    //If you want you can change the directory using the following line.
    channel.cd(RemoteDirectoryPath)
channel.put(new FileInputStream(localFile),localFile.getName());
    channel.disconnect();
session.disconnect();

このようにして、generateを使用してリモートシステムに公開鍵を追加しましたssh-keygen。したがって、プログラムを実行するたびにパスワードを要求しません。

おすすめ記事