JavaからSSH/SCPを実行する

来週からの案件で必要になるので調べてみました。

Ganymed SSH-2 for Java
最終更新が2006年とかなり古めのライブラリで、調査開始後最初に見つけたのでこちらを利用してみます。

参考ページを写経してSCPを実行してみます。ただそのままでは面白くないので、こちらでは公開鍵認証を使ってみました。

public static void main(String[] args) throws Exception {
    Connection conn = new Connection("ipaddress");
    conn.connect();
    boolean result = conn.authenticateWithPublicKey("userid", new File(
            "/path/to/privateKey"), "passphrase");
    if (result) {
        System.out.println("Connection successful!!");
        SCPClient client = conn.createSCPClient();
        client.put("/path/to/localFile", "/path/to/targetDir");
    } else {
        System.out.println("Connection failure.");
    }
    conn.close();
}

参考ページ同様例外処理は省いてますが、驚くほど簡単に書けました。いくつか大きいファイルでも試してみましたが特に問題ありません。当然きちんとした環境で改めてテストしてみる必要はありますが、このライブラリで特に問題なさそうです。外部コマンド実行だと色々面倒な事が多いので、こうやって簡単にできるのは嬉しいですね。

参考サイト

以下のページを参考にさせて頂きました。
Java で ssh や scp を呼び出す(1) - Mi manca qualche giovedi`?