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 要素を使用して、SSH接続を介したローカルポートフォワーディングを定義できます。 localtunnels パラメータも指定されている場合、両方のトンネルが確立されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| lport | 転送されるローカルポートの番号。 | はい |
| rhost | ローカルポートの転送先のリモートホストのホスト名またはIPアドレス。 | はい |
| rport | ローカルポートの転送先のリモートホストのポート番号。 | はい |
オプションで、任意の数の remotetunnel 要素を使用して、SSH接続を介したリモートポートフォワーディングを定義できます。 remotetunnels パラメータも指定されている場合、両方のトンネルが確立されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| rport | 転送されるリモートポートの番号。 | はい |
| lhost | リモートポートの転送先のローカルホストのホスト名またはIPアドレス。 | はい |
| lport | リモートポートの転送先のローカルホストのポート番号。 | はい |
Ant 1.10.10以降
特定のAnt属性で直接サポートされていない、作成されたJSchセッションの設定を追加します。
| 属性 | 説明 | 必須 |
|---|---|---|
| key | 設定キー。 | はい |
| value | 設定値。 | はい |
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ファイルからパスワードを取得することです。