リモート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
。したがって、プログラムを実行するたびにパスワードを要求しません。