scp task
scpを使いますとsshを使った。安全なファイルのやり取りができます。
標準的なFTPと比べますと、アカウント情報の暗号化および、データーの暗号化されています。
ただしこれを使うには、基本的にサーバー側にsshdが稼動していることが前提です
sshの導入に関してはgoogleにてsshで検索すると有益な情報が多数見つかるでしょう。
scpでWebの更新にも使えなくもないです。
scpタスクはオプショナルタスクですのでJavaによるssh2の実装 別途Jschが必要となります。
Jschはここから入手できます。
使用例
ローカルのファイルをリモートへコピー
<scp todir="${user}:${password}@${server}:${remote_dir}" trust="yes"> <fileset dir="${local_dir}"> </fileset> </scp>
リモートのファイルをローカルへコピー
<scp file="${user}:${password}@${server}:${remote_dir}" todir="${local_dir}" trust="yes"/>
属性について
パスワード等の記述には最新の注意をしてください。
file
コピーするファイルを記入します。
ローカルからリモートへコピーする場合
filesetエレメントで代用できます。
リモートからローカルへの場合は
ここにユーザー名:パスワード@サーバーホスト名:サーバー側ディレクトリー位置
を記入します。
パスワードは省略可能です。
その場合ユーザー名@サーバーホスト名:サーバー側ディレクトリー位置
となります。
todir
ローカルからリモートへコピーする場合
ここにユーザー名:パスワード@サーバーホスト名:サーバー側ディレクトリー位置
を記入します。
リモートからローカルへコピーする場合
ローカルのパスを記入します。
trust
これをyesでない場合known hostsファイルが必要になる。
このファイルパスをknownhosts属性で指定する。
port
ssh接続で使うport番号です。defaultは22番です。
knownhosts
trustをnoにしたときに必要となるファイルのパスを指定します。
デフォルトのパスは${user.home}/.ssh/known_hosts.となっています。
このファイルはssh2形式?です。
failonerror
エラーが出た場合、Taskの実行をここで終了するかどうか
defaultはtrueとなっています。
password
パスワードを記入します。todirやfileに直接記述することも可能です。
keyfile#text
キーを使った認証をする場合PrivateKeyのパスを記入します。
passphrase
キーを使った場合に必要となるパスワードを記入します。
エラーメッセージ例
com.jcraft.jsch.JSchException: reject HostKey
trustをyesにせず、knownhostsも指定しなかった場合
com.jcraft.jsch.JSchException: Auth fail
ユーザー名やパスワードが間違っている場合
neither password nor passphrase for user admin has been given. Can't authenticate.
パスワードがどこにも記入されておらず、keyfileも指定されていない場合