# SimpleSSHD

SimpleSSHD is an SSH2 server based on dropbear that supports scp, sftp, and rsync. It only supports public-key based authentication (no password/interactive auth). It does not use root, which means it must listen on a port over 1024 (defaults to port 2222).

## Quick start

- Install SimpleSSHD.
- Make a directory `/sdcard/ssh`, and put an `authorized_keys` file in that directory.
- On any computer which will connect to your Android device, set the port to 2222. With OpenSSH, this can be done by putting these lines in `~/.ssh/config`:

      Host myphone
      Port 2222

- Launch SimpleSSHD, and in Settings enable "Start on Boot", and manually start it for the first time.
- You might want to put a `.profile` in `/sdcard/ssh`, too.

Voila! You can use ssh/scp/sftp/rsync to talk to your Android device!

## Configuration

There are three directory settings that are important for SimpleSSHD.

The first is the path for general dropbear files, which defaults to `/sdcard/ssh`. Most importantly, this is where `authorized_keys` is found. It is also where host keys wind up (they are created on demand), and where temporary files go.

Next is the path to the login shell. The default Android shell is `/system/bin/sh`, but you may prefer to use the one that comes with busybox or whatever. If you set it to the su binary (i.e., `/system/xbin/su`), then scp, sftp, and rsync will run as root and should be able to access files outside of the sdcard.

A bug in SuperSU interacts with an infelicity in rsync to cause an occasional deadlock. This is a real pain because I use SuperSU+rsync for system-wide backups, which will always eventually trigger the deadlock. To work around this, there is a "Buffer hack" option that should be enabled if you use rsync with SuperSU. It adds a miniscule overhead to rsync, but isn't harmful even if you aren't using SuperSU.

Finally, there is the path for the home directory, which also defaults to `/sdcard/ssh`. This is where your ssh session starts out, and is where `.profile` will be found if it is present.

There is also a place where you can put commandline options for dropbear server. The options which are hardcoded are: `-R -F -p :portno`. You can use `\` or `"` to escape characters in this commandline.

## Change Log

- 2014/12/22 Version 1.0: Initial public release.
- 2014/12/29 Version 1.1: Works with Lollipop now.
- 2015/01/18 Version 1.2: Displays the IP address it's listening on.
- 2015/06/21 Version 1.3: Hack to make rsync work with SuperSU.
- 2015/11/23 Version 1.4: Don't abort if IP address lookup fails, and make proper "About" menu.
- 2016/06/11 Version 1.5: SuperSU+rsync hack now limits the buffer size to 1MB.
- 2016/06/12 Version 1.6: Fix typo that broke scp/sftp/rsync in version 1.5.

## About

SimpleSSHD is built using parts from open source projects: Dropbear SSH, openssh (for scp and sftp-server), and rsync. Those projects in turn are built on other projects. A lot of people's work is represented here, and very little of my own.

But if you find bugs/infelicities, it's probably my fault, so email me:

To get the source:

>     git clone http://galexander.org/git/simplesshd.git