I of course have ConnectBot, but I'm looking for something I can script.

Edit: To clarify here, I'm not interested in running scripts from a terminal. What I want to do is run an SSH command in an automated/scheduled manner. Tasker and Locale Execute are the equivalent of cron, all I need is the 'ssh' command to run from the script.

Terminal Emulator force-closes consistently on my device, and apparently on lots of other peoples' devices. I also don't see any indication that it can be run from Tasker, or from the command line.
– TREESep 22 '10 at 12:22

Turns out that Better Terminal Emulator Pro does include the dropbear client binary. Update your answer to include that info, and I'll accept it.
– TREESep 23 '10 at 12:34

There are various open source android applications that install their own dropbear ssh client copy too, simply adding a symlink makes it work under Google's Terminal Emulator.
– Jeff BurdgesMay 27 '12 at 21:21

your link for terminal emulator from google androlib.com/android.application.com-android-term-jpAz.aspx says "This application seems to be removed from the Android Market" I see no 'terminal emulator' by google in google play store. The first result in the google play store is Android terminal emulator by jack palevich but it has no ssh.
– barlopSep 3 '14 at 11:40

Since my original question was about an ssh binary, and there is an answer for that, I'll accept that answer. However, there is another way to do what I wanted to do, kinda, that might be interesting to someone some day.

Tasker + ConnectBot can be used to execute arbitrary remote (or local, I guess, but Locale Execute is better for that) commands on a schedule.

Step 1: Set up your connection in ConnectBot.

You can have duplicate connections in ConnectBot as long as they have different aliases. You have to rename one first (away from user@host) in order to create the second. Long Press and select "Edit Host" to perform these changes.

You probably want to set up an ssh key without a password so that you can use this for automation.

Once the connection actually works, you can use "Post-login automation" to add the remote commands you would like to run. Make sure there is a blank line at the end so that enter is sent after your last command. Use enter or ; to separate commands. I suggest using something like "echo hello" as a test until you are sure things are working, and "exit" at the end if you don't want to leave the connection open.

Test this in isolation.

Step 2: Create a Tasker Task to call connectbot.

Create a new Task in Tasker.

Add an Action. From Misc, select "Action Intent"

The fields are:

Action: android.intent.action.VIEW

Cat: Default

Data: ssh url, in the form of "ssh://user@host/#alias" (without the quotes). The alias, user and host here must match the alias you set up in Step 1.

Target: Activity

Click Test. Connectbot should open and your commands should execute on the remote host.

Is there a way to define the connection programatically, i.e., via Tasker and calling intents?
– Dang KhoaSep 18 '11 at 23:37

I'm not sure about that. I don't recall exactly how I found the above Intent information, but it's basically a standard ssh URL. There are tools that can investigate Intents for apps, but I haven't used those.
– TREESep 19 '11 at 20:35

I can add that if you remove the defaults for ConnectBot and have another ssh client installed (BTEP, for example) then ssh URLs will prompt for which app to use. This underscores that the above is something of a standard, both "VIEW" and the ssh format. The only thing specific to ConnectBot in this case is the #alias on the end.
– TREESep 19 '11 at 20:37

I have successfully used BotBrew Basil Experimental when running Android 4.4. BotBrew Basil Experimental is based on apt-get so after installing APK and bootstraping I just did apt-get install dropbear in a root shell to install SSH client (and server).

looking at that program(sshdroid by beserker) I see only an ssh server gui. I then tried terminal emulator by jack, but see no ssh command added. And looking for quickssh, in the play store, I don't see it. I see only quicksshd(by teslacoil) which has a small price and no doubt isn't an ssh client.
– barlopSep 3 '14 at 12:31

Terminal Emulator absolutely supports scripts*. Don't believe the nay-sayers. You will need to learn BASH shell scripting, if you're not already familiar with it. Write a script and save it on your SD card. Run it with "sh filename" from Term.

If you clarify what it is you want to "script" having to do with SSH, I can likely give you a better recommendation.

To call ssh from a script, all you need to do is set up ssh keys. There are a million how-tos on the web, but there's a page on the Cyanogen wiki that might be more suited to Android users. Once you set up keys, your general ssh command would look something like this: ssh -i /PATH/TO/KEY USER@IP

You can put that in a script, run it, and you will be logged in to the remote machine.

But here's what I think you're wanting to do. To only execute a command on a remote computer, just add it in single quotes: ssh -i /PATH/TO/KEY USER@IP 'command'

That executes the command on the remote machine without logging you in. You can run commands with options, pipes, redirects etc, but it's sometimes better to keep them simple. Except for the delay, it looks the same as executing the command(s) locally and can be used the same.

Locale Execute can be picky about what commands it will run. If it doesn't work, try putting it in a script and using Locale Execute to run the script.

Also, I have had problems with the ssh binary that is on the phone and found that moving it from /system/xbin and creating a link at /system/xbin/ssh to the Better Terminal Emulator ssh binary is more reliable. The BTEP binary is in /data/data/com.magicandroidapps.bettertermpro/bin/ssh

Botbrew is a package manager for Android, in the likes of okpg for BSD or more recently, like APT for Debian. Pretty nice. It doesn't have an ssh client as a package, but it doesn't look too hard to put in if you're used to building your own packages. And it could be useful as a toolchain for when you want to build other C/C++/etc binaries and libraries.

So albeit this isn't a direct answer, it may be useful for some people to know about.

AndFTP can connect over any port you configure so I'm sure it could connect over SSH. But I'm not sure how easy it is to script usage of it. I use the app myself all the time for my hosting server and it works great.

Not sure if you can SSH with Terminal Emulator, but you could try it too. I use that app frequently for doing things I'm too lazy to do with ADB.

This is not a generic answer sadly and will work only on one of x86/ARM/MIPS, probably ARM. Also the linked content will most probably disappear at some time. Most custom ROMs already include a working pure cmdline ssh client.
– ce4Sep 13 '12 at 12:01

Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).