情報関連」カテゴリーアーカイブ

[Java] Apache MINA SSHDでSCPクライアントを作る(圧縮転送)


2017/4/25 作成

・Java
・SCP Client
・Compression(圧縮転送)ができる
・ファイル出力しなくてもよい(=メモリにそのまま読める)

という条件で、SCPクライアントのJavaライブラリをいろいろ試してみたのだが、
どれもビミョーに条件を満たさず、悪戦苦闘の末に行き着いたのがApache MINA SSHDだった。
ただこれも、ドキュメントが不足にネットの実装例も古かったりと苦戦させられた。

なのでここに結果をメモをする。

https://github.com/apache/mina-sshd

MinaSCP.java

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.scp.ScpClient;
import org.apache.sshd.client.session.ClientSession;
import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.compression.BuiltinCompressions;
import org.apache.sshd.common.compression.CompressionFactory;

public class MinaSCP {

	public static void main(String[] args) throws Exception {

		String hostname = "192.168.1.1";
		int port = 22;

		String user = "username";
		String password = "password ";

		String remotefilepath = "/home/username/hoge.txt";

		Long timeout = 10000L;

		SshClient client = SshClient.setUpDefaultClient();

		// 圧縮転送の設定(手元の環境だとdelayedZlibは使えてzlibは使えなかった)
		List<CompressionFactory> fs = new ArrayList<CompressionFactory>();
		fs.add(BuiltinCompressions.delayedZlib);
		fs.add(BuiltinCompressions.zlib);
		fs.add(BuiltinCompressions.none);
		client.setCompressionFactories(NamedFactory.setUpBuiltinFactories(false, fs));

		client.start();

		ClientSession session = client.connect(user, hostname, port).verify(timeout).getSession();

		session.addPasswordIdentity(password);

		session.auth().verify(timeout);

		ScpClient scp = session.createScpClient();

		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		scp.download(remotefilepath, baos);

		System.out.println(baos.toString());

		client.stop();
	}
}

pom.xml

		<!-- https://mvnrepository.com/artifact/org.apache.sshd/sshd-core -->
		<dependency>
			<groupId>org.apache.sshd</groupId>
			<artifactId>sshd-core</artifactId>
			<version>1.4.0</version>
		</dependency>

備忘録:WordPressのURL変更

■問題

ここ1ヶ月ほど、自宅外からブログが閲覧できない状態になっていた

■原因

3月に鯖を自宅鯖からVPSに移行した際、URLの変更を適当に済ませたことが原因だった

WordPressディレクトリ直下のwp-config.phpに
「define(‘WP_SITEURL’,’http://example.com/wordpress’);」
と追記するだけでは、CSSだとかjsのURLが変更されないっぽい

自宅鯖の外部公開をやめたことで、問題が表面化
(LAN内はhostファイルでドメインのヒモ付をしていたので閲覧できた)

■解決

横着せずにデータベースを修正する
wp-optionsテーブルのoption_nameが’siteurl’なレコードのoption_valueを変更

■ついでに

こないだとったドメインに変更した
imizuno.net → izuka.me