net.schmizz.sshj は、Javaで使える最強のSSHライブラリの一つだと思う。
SSHJ - SSHv2 library for Javaとは、ダウンロード
SSHJ - SSHv2 library for Javaの公式サイトは以下の通りです。
・https://github.com/hierynomus/sshj
sshjのライセンスはApacheライセンス Version 2なので商用でも利用しやすいです。
・https://github.com/hierynomus/sshj/blob/master/LICENSE
SSHJの使用例、使い方
SSHJを使うと、暗号化キーを使ってsshでファイルをアップロード、ダウンロードするコードが大幅に簡素化されます。
ファイルをアップロードするサンプル例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package net.schmizz.sshj.examples; import net.schmizz.sshj.SSHClient; import net.schmizz.sshj.sftp.SFTPClient; import net.schmizz.sshj.xfer.FileSystemFile; import java.io.File; import java.io.IOException; /** This example demonstrates uploading of a file over SFTP to the SSH server. */ public class SFTPUpload { public static void main(String[] args) throws IOException { final SSHClient ssh = new SSHClient(); ssh.loadKnownHosts(); ssh.connect("localhost"); try { ssh.authPublickey(System.getProperty("user.name")); final String src = System.getProperty("user.home") + File.separator + "test_file"; final SFTPClient sftp = ssh.newSFTPClient(); try { sftp.put(new FileSystemFile(src), "/tmp"); } finally { sftp.close(); } } finally { ssh.disconnect(); } } } |
・https://stackoverflow.com/questions/9283556/sshj-keypair-login-to-ec2-instance
1 2 3 4 5 |
SSHClient ssh = new SSHClient(); ssh.connect("ec2-XXXXXXX.compute-1.amazonaws.com"); ssh.authPublickey("ubuntu", getPemAsString("/Users/me/ec2.pem")); final Session session = ssh.startSession(); session.exec("echo -e \"test\" >> /home/ubuntu/testfile"); |
SSHJのコンソールログを消す
SSHJはデフォルトではログがコンソールにそのまま出力されて不便です。
コンソールログを消すには、logback.xmlを設定します。
・https://urashita.com/archives/33462
コメント
[…] ・https://urashita.com/archives/33360 […]