解ってしまえばすぐですが。。。

JavaでSSHを使用する必要が出てきたので、
Orion SSH2を使用したが、落とし穴にハマったメモ。

やりたいことはJavaでscpしたいだけなので
google先生に色々聞きながらとりあえず実装してみた。
ローカルから、サーバへファイル転送できることを確認してプロトタイプ完了。

しかし、転送先を新たに作成した仮想環境に変更すると、失敗する。
「 Error during SCP transfer. 」

設定ミスったかぁと思い、いろいろ見なおすも特に問題ない。
当然、ターミナルで直接接続も問題ない。

Sshdのログから、認証に成功した後、クライアントから切断しているので
ファイルをputした際のリモートディレクトリが怪しいのだが、、、問題ないなぁ。

仕方ないのでOrionSSH2のソースをほじくり返す。
以下該当箇所抜粋(一部省略)
String cmd = “scp -t -d ” + remoteTargetDirectory;
try
{
sess = conn.openSession();
sess.execCommand(cmd);
sendFiles(sess, localFiles, remoteFiles, mode);
}
catch (IOException e)
{
throw (IOException) new IOException(“Error during SCP transfer.”).initCause(e);
}

「scp -t -d 」ってなんだ?
そんなオプション知らないし、そもそもサーバ側でコマンド発行してる?

確かに仮想環境はCentOSの最小構成なので、入っていないものも多い。
scpコマンドが使用できないので、openssh-clientをインストールして再度チャレンジ。

scp成功。

マニュアルに記載のないオプションなので詳細不明だが、
ディレクトリのテストコマンドだと勝手に理解して納得。

カテゴリー: Arakawa, 日々徒然 パーマリンク

1 Response to 解ってしまえばすぐですが。。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です