SSHSESSION

Apache Ant 1.8.0 以降

説明

SSHデーモンを実行しているリモートマシンとのSSH接続を確立し、オプションでその接続を介して任意の数のローカルまたはリモートトンネルを確立し、ネストされたタスクを実行してから接続を切断するタスクです。

注意: このタスクは、Antディストリビューションに含まれていない外部ライブラリに依存しています。詳細については、ライブラリの依存関係を参照してください。このタスクはJSCh 0.1.33以降でテストされており、0.1.28より前のバージョンのJSChでは動作しません。

sshexec タスクと scp タスクも参照してください。

パラメータ

属性 説明 必須
host 接続するリモートホストのホスト名またはIPアドレス。 はい
username 接続するリモートホストのユーザー名。 はい
port リモートホストで接続するポート。 いいえ; デフォルトは 22
localtunnels ローカルポートフォワーディングを定義する、コロン区切りの lport:rhost:rport のトリプレットをカンマ区切りで指定します。
ネストされた localtunnel 要素も指定されている場合、両方のトンネルが確立されます。
いいえ
remotetunnels リモートポートフォワーディングを定義する、コロン区切りの rport:lhost:lport のトリプレットをカンマ区切りで指定します。
ネストされた remotetunnel 要素も指定されている場合、両方のトンネルが確立されます。
いいえ
trust yes または true に設定すると、すべての不明なホストを信頼します。
注意: これを false(デフォルト)に設定すると、接続先のホストが knownhosts ファイルにリストされている必要があります。これは、ファイルが存在することを意味します。
いいえ; デフォルトは no
knownhosts リモートホストのIDを検証するために使用する既知のホストファイルを設定します。これはSSH2形式のファイルである必要があります。SSH1形式はサポートされていません。 いいえ; デフォルトは ${user.home}/.ssh/known_hosts
failonerror コマンドが正常に完了しなかった場合にビルドを停止するかどうか。 いいえ; デフォルトは true
password パスワード。 はい、鍵ベースの認証を使用している場合、またはパスワードがファイルまたは todir 属性で指定されている場合を除く
keyfile 秘密鍵を保持するファイルの場所。 はい、鍵ベースの認証を使用している場合
passphrase 秘密鍵のパスフレーズ。 いいえ; デフォルトは空の文字列
sshConfig OpenSSHスタイルの設定を保持するファイルの場所(例:${user.home}/.ssh/config)。ユーザー名とキーファイルは、タスクパラメータで既に指定されていない限り、設定ファイルから読み取られます。 Ant 1.10.8以降 いいえ
timeout 指定された時間(ミリ秒単位)内に接続を確立できない場合はあきらめます。 いいえ; デフォルトは 0 で、never を意味します。

ネストされた要素として指定されたパラメータ

localtunnel

オプションで、任意の数の localtunnel 要素を使用して、SSH接続を介したローカルポートフォワーディングを定義できます。 localtunnels パラメータも指定されている場合、両方のトンネルが確立されます。

属性 説明 必須
lport 転送されるローカルポートの番号。 はい
rhost ローカルポートの転送先のリモートホストのホスト名またはIPアドレス。 はい
rport ローカルポートの転送先のリモートホストのポート番号。 はい

remotetunnel

オプションで、任意の数の remotetunnel 要素を使用して、SSH接続を介したリモートポートフォワーディングを定義できます。 remotetunnels パラメータも指定されている場合、両方のトンネルが確立されます。

属性 説明 必須
rport 転送されるリモートポートの番号。 はい
lhost リモートポートの転送先のローカルホストのホスト名またはIPアドレス。 はい
lport リモートポートの転送先のローカルホストのポート番号。 はい

additionalConfig

Ant 1.10.10以降

特定のAnt属性で直接サポートされていない、作成されたJSchセッションの設定を追加します。

属性 説明 必須
key 設定キー。 はい
value 設定値。 はい

sequential

sequential 要素は必須パラメータです。 SSH接続が確立され、すべてのローカルおよび/またはリモートトンネルが確立された後に実行されるネストされたタスクのコンテナです。

パスワード認証を使用してリモートマシンに接続し、ローカルのCVSポートをリモートホストに転送し、トンネルを使用できるCVSコマンドをローカルで実行します。

<sshsession host="somehost"
            username="dude"
            password="yo"
            localtunnels="2401:localhost:2401">
  <sequential>
    <cvs command="update ${cvs.parms} ${module}"
         cvsRoot="${cvs.root}"
         dest="${local.root}"
         failonerror="true"/>
  </sequential>
</sshsession>

ネストされた localtunnel 要素を使用して同じことを行います。

<sshsession host="somehost"
            username="dude"
            password="yo">
  <localtunnel lport="2401" rhost="localhost" rport="2401"/>
  <sequential>
    <cvs command="update ${cvs.parms} ${module}"
         cvsRoot="${cvs.root}"
         dest="${local.root}"
         failonerror="true"/>
  </sequential>
</sshsession>

鍵認証を使用してリモートマシンに接続し、ポート1080を直接アクセスできないイントラネットサーバーのポート80に転送し、そのトンネルを使用して get タスクを実行します。

<sshsession host="somehost"
            username="dude"
            keyfile="${user.home}/.ssh/id_dsa"
            passphrase="yo its a secret"/>
  <LocalTunnel lport="1080" rhost="intranet.mycomp.com" rport="80"/>
  <sequential>
    <get src="https://:1080/somefile" dest="temp/somefile"/>
  </sequential>
</sshsession>

セキュリティに関する注意: sshsession タスクにパスワードまたはパスフレーズ、ユーザー名をハードコーディングすると、深刻なセキュリティホールになる可能性があります。変数置換を使用して、コマンドラインでパスワードを含めることを検討してください。例えば

<sshsession host="somehost"
            username="${username}"
            password="${password}"
            localtunnels="2401:localhost:2401">
  <sequential>
    <sometask/>
  </sequential>
</sshsession>

次のコマンドラインでAntを起動する

ant -Dusername=me -Dpassword=mypassword target1 target2

少しはましですが、ユーザー名/パスワードはUnixシステムのすべてのユーザーに(psコマンドを介して)公開されます。最良のアプローチは、<input>タスクを使用するか、(安全な).propertiesファイルからパスワードを取得することです。