since Ant 1.6
Runs a command on a remote machine running SSH daemon.
Note: This task depends on external libraries not included in the Ant distribution. See Library Dependencies for more information. This task has been tested with jsch-0.1.29 and above and won't work with versions of jsch earlier than 0.1.28.
See also the scp task
| Attribute | Description | Required |
| host | The hostname or IP address of the remote host to which you wish to connect. | Yes |
| username | The username on the remote host to which you are connecting. | Yes |
| command | The command to run on the remote host. | Either this or commandResource must be set |
| commandResource | The resource (file) that contains the commands to run on the remote host. | Either this or command must be set |
| port | The port to connect to on the remote host. | No, defaults to 22. |
| trust | This trusts all unknown hosts if set to yes/true. Note If you set this to false (the default), the host you connect to must be listed in your knownhosts file, this also implies that the file exists. |
No, defaults to No. |
| knownhosts | This sets the known hosts file to use to validate the identity of the remote host. This must be a SSH2 format file. SSH1 format is not supported. | No, defaults to ${user.home}/.ssh/known_hosts. |
| failonerror | Whether to halt the build if the command does not complete successfully. | No; defaults to true. |
| password | The password. | Not if you are using key based authentication or the password has been given in the file or todir attribute. |
| keyfile | Location of the file holding the private key. | Yes, if you are using key based authentication. |
| passphrase | Passphrase for your private key. | No, defaults to an empty string. |
| output | Name of a file to which to write the output. | No |
| append | Whether output file should be appended to or overwritten. Defaults to false, meaning overwrite any existing file. | No |
| outputproperty | The name of a property in which the output of the command should be stored. | No |
| timeout | Stop the command if it doesn't finish within the specified time (given in milliseconds). Defaults to 0 which means "wait forever". | No |
Run a command on a remote machine using password authentication
<sshexec host="somehost" username="dude" password="yo" command="touch somefile"/>
Run a command on a remote machine using key authentication
<sshexec host="somehost"
username="dude"
keyfile="${user.home}/.ssh/id_dsa"
passphrase="yo its a secret"
command="touch somefile"/>
Run a command on a remote machine using key authentication with no passphrase
<sshexec host="somehost"
username="dude"
keyfile="${user.home}/.ssh/id_dsa"
command="touch somefile"/>
Run a set of commands from a command resource (file) on a remote machine using key authentication with no passphrase
<sshexec host="somehost"
username="dude"
keyfile="${user.home}/.ssh/id_dsa"
commandResource="to_run"/>
Security Note: Hard coding passwords and/or usernames
in sshexec task can be a serious security hole. Consider using variable
substitution and include the password on the command line. For example:
<sshexec host="somehost"
username="${username}"
password="${password}"
command="touch somefile"/>
Invoke ant with the following command line:
ant -Dusername=me -Dpassword=mypassword target1 target2