Go to file
Fedor Brunner 4122cac66b Prefer stronger algorithms in algorithm negotiation.
Prefer diffie-hellman-group14-sha1 (2048 bit) over
diffie-hellman-group1-sha1 (1024 bit).

Due to meet-in-the-middle attacks the effective key length of
three key 3DES is 112 bits. AES is stronger and faster then 3DES.

Prefer to delay the start of compression until after authentication
has completed. This avoids exposing compression code to attacks
from unauthenticated users.

(github pull request #9)
2015-01-23 23:00:25 +08:00
debian changelog, version number bump 2014-10-23 21:43:00 +08:00
libtomcrypt A bit of work on ecdsa for host/auth keys 2013-04-14 00:50:03 +08:00
libtommath fix out-of-tree cleaning 2012-04-08 02:06:54 -04:00
.hgsigs Added signature for changeset 2d421bc0545d 2014-10-23 22:09:46 +08:00
.hgtags Added tag DROPBEAR_2014.66 for changeset 735511a4c761 2014-10-23 22:09:22 +08:00
.travis.yml Don't need to mkdir 2014-03-08 21:00:57 +08:00
agentfwd.h Make _sign and _verify functions take a buffer* rather than void* and int 2013-04-06 16:00:37 +08:00
algo.h use oldstyle comments 2013-11-14 22:03:30 +08:00
atomicio.c
atomicio.h
auth.h Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
bignum.c Various cleanups and fixes for warnings 2013-11-12 23:02:32 +08:00
bignum.h Add m_mp_alloc_init_multi() helper 2013-05-23 22:18:16 +08:00
buffer.c merge in HEAD 2013-05-21 12:09:35 +08:00
buffer.h ecc kind of works, needs fixing/testing 2013-04-07 01:36:42 +08:00
CHANGES changelog, version number bump 2014-10-23 21:43:00 +08:00
channel.h Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
chansession.h Combine code for SSH_CONNECTION and SSH_CLIENT 2014-10-21 22:33:49 +08:00
circbuffer.c use an empty writebuf rather than a NULL one 2013-03-20 22:31:07 +08:00
circbuffer.h
cli-agentfwd.c clarify bad/unknown 2015-01-04 22:32:38 +08:00
cli-auth.c Fix pubkey auth if the first key presented fails (infinite loop of 2014-04-23 16:22:50 +08:00
cli-authinteract.c Fix memory leak found by Klocwork 2011-04-07 12:34:44 +00:00
cli-authpasswd.c Add support for SSH_ASKPASS_ALWAYS env variable for dbclient. If it 2007-09-14 00:19:44 +00:00
cli-authpubkey.c - Fix various hardcoded uses of SHA1 2013-04-08 00:10:57 +08:00
cli-channel.c Rearranged some more bits, marked some areas that need work. 2006-10-02 16:34:06 +00:00
cli-chansession.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
cli-kex.c requirenext doesn't need two values 2014-01-23 22:25:52 +08:00
cli-main.c Set tcp priority as follows: 2014-07-16 22:53:32 +08:00
cli-runopts.c Be a bit safer in case pw_name doesn't exist 2014-08-06 22:10:57 +08:00
cli-session.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
cli-tcpfwd.c Set tcp priority as follows: 2014-07-16 22:53:32 +08:00
common-algo.c Prefer stronger algorithms in algorithm negotiation. 2015-01-23 23:00:25 +08:00
common-channel.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
common-chansession.c
common-kex.c clear hash state memory after use 2015-01-04 23:10:59 +08:00
common-runopts.c - Don't use multichar constants since recent gcc complains 2014-07-27 22:55:29 +08:00
common-session.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
compat.c Fix compat basename() to handle paths with no slashes. Thanks to Frank Teo 2013-03-19 20:04:55 +08:00
compat.h
config.guess another new config.guess 2013-06-10 2013-11-14 22:07:18 +08:00
config.sub Update to 2013-10-01 2013-12-03 21:36:12 +08:00
configure.ac Add new monotonic_now() wrapper so that timeouts are unaffected by 2014-03-13 23:50:09 +08:00
crypto_desc.c Be safer with how we handle ltc_ecc_sets[] (particularly with 2013-04-09 22:44:19 +08:00
crypto_desc.h use oldstyle comments 2013-11-14 22:03:30 +08:00
curve25519-donna.c curve25519 2013-11-08 23:11:43 +08:00
dbclient.1 Add '-V' for version 2014-07-27 22:06:26 +08:00
dbmulti.c Add URL to usage text 2013-03-21 23:10:47 +08:00
dbrandom.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
dbrandom.h rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
dbutil.c Don't warn about ENOTSOCK when setting priority 2014-08-06 22:16:38 +08:00
dbutil.h - Don't use multichar constants since recent gcc complains 2014-07-27 22:55:29 +08:00
debug.h Back out accidentally committed files 2014-01-23 22:29:04 +08:00
dropbear.8 Add '-V' for version 2014-07-27 22:06:26 +08:00
dropbearconvert.1 Add manpage for dropbearconvert 2013-10-03 23:45:25 +08:00
dropbearconvert.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
dropbearkey.1 docs for ecdsa 2013-11-14 22:14:09 +08:00
dropbearkey.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
dss.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
dss.h more ecdsa signkey work, not correct 2013-04-28 23:17:43 +08:00
ecc.c Fix some warnings 2013-11-25 23:08:33 +08:00
ecc.h use oldstyle comments 2013-11-14 22:03:30 +08:00
ecdsa.c use oldstyle comments 2013-11-14 22:03:30 +08:00
ecdsa.h use oldstyle comments 2013-11-14 22:03:30 +08:00
fake-rfc2553.c - Update fake-rfc2553.{c,h} from OpenSSH 5.5p1 2010-07-21 13:53:23 +00:00
fake-rfc2553.h - Update fake-rfc2553.{c,h} from OpenSSH 5.5p1 2010-07-21 13:53:23 +00:00
filelist.txt
gendss.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
gendss.h Rename rsa_key to dropbear_rsa_key (and same for dss too) so 2010-07-21 12:55:25 +00:00
genrsa.c generate RSA keys of exact length 2014-02-14 23:18:45 +08:00
genrsa.h Rename rsa_key to dropbear_rsa_key (and same for dss too) so 2010-07-21 12:55:25 +00:00
gensignkey.c Open directories O_RDONLY for fsync, add debugging if it fails 2015-01-04 22:22:43 +08:00
gensignkey.h refactor key generation, make it generate as required. 2013-11-07 00:18:52 +08:00
includes.h Add linux/types.h to includes to avoid missing ___u64 etc 2014-02-17 22:05:59 +08:00
INSTALL Fix spelling typo 2007-07-19 14:07:41 +00:00
install-sh
kex.h curve25519 2013-11-08 23:11:43 +08:00
keyimport.c Fix variables may be uninitialized. 2015-01-23 22:23:23 +08:00
keyimport.h
LICENSE Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
list.c list.c also has no trailing newline 2011-07-05 12:52:06 +00:00
list.h Fix lost ending newline 2011-07-05 12:50:15 +00:00
listener.c
listener.h
loginrec.c If running as non-root only allow that user to log in 2013-04-17 22:29:18 +08:00
loginrec.h Fix wtmp, testing for wtmp.h and wtmpx.h doesn't make sense 2014-08-13 22:07:43 +08:00
ltc_prng.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
ltc_prng.h use oldstyle comments 2013-11-14 22:03:30 +08:00
Makefile.in Fix installing dropbear.8 error when building in a separate directory. 2015-01-23 22:59:30 +08:00
MULTI - Fix "inst_scp" target since there isn't a manpage 2013-10-09 22:24:39 +08:00
options.h Add config option to disable cbc. Disable twofish by default 2015-01-23 22:37:14 +08:00
packet.c Integrity error (bad packet size %u) negative length 2015-01-23 22:21:06 +08:00
packet.h - Get rid of decryptreadbuf, just decrypt in-place with readbuf 2009-03-01 16:15:57 +00:00
process-packet.c Make -K keepalive behave like OpenSSH's ServerAliveInterval 2014-07-09 00:15:20 +08:00
progressmeter.c
progressmeter.h
queue.c Move the more verbose TRACE() statements into TRACE2() 2013-04-01 00:07:26 +08:00
queue.h Try using writev() for writing packets out to tcp 2013-03-31 23:15:35 +08:00
README README: fix ecdsa key generation command 2014-02-09 03:56:50 -05:00
release.sh Archive should be bz2 nor gz 2014-07-27 22:56:35 +08:00
rsa.c Make some debug info conditional 2014-02-24 20:53:32 +08:00
rsa.h Make _sign and _verify functions take a buffer* rather than void* and int 2013-04-06 16:00:37 +08:00
runopts.h - Don't use multichar constants since recent gcc complains 2014-07-27 22:55:29 +08:00
scp.c Remove -o from scp help 2014-10-23 20:52:10 +08:00
scpmisc.c Define _GNU_SOURCE for vasprintf 2013-03-24 00:02:20 +08:00
scpmisc.h put back the TIMEVAL_TO_TIMESPEC and timersub macros for Linux 2006-03-11 14:57:12 +00:00
service.h Don't bother waiting for a ssh-connection service reply - the server 2013-03-31 21:38:17 +08:00
session.h Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
signkey.c Fix compiling with ECDSA and DSS disabled 2014-06-25 23:37:44 +08:00
signkey.h use oldstyle comments 2013-11-14 22:03:30 +08:00
SMALL
ssh.h propagate from branch 'au.asn.ucc.matt.dropbear' (head 0501e6f661b5415eb76f3b312d183c3adfbfb712) 2006-03-21 16:20:59 +00:00
sshpty.c ignore I_PUSH if it isn't defined, for Android from Reimar Döffinger 2013-03-19 20:12:19 +08:00
sshpty.h
svr-agentfwd.c rename random.h to dbrandom.h since some OSes have a system random.h 2013-11-14 22:05:47 +08:00
svr-auth.c Fix auth timeout regression 2014-07-09 22:02:22 +08:00
svr-authpam.c Get rid of spurious newlines in pam log messages 2013-10-03 23:04:26 +08:00
svr-authpasswd.c Constant time memcmp for the hmac and password crypt 2013-10-03 22:25:30 +08:00
svr-authpubkey.c Don't exit fatally if authorized_keys has a line like 2013-11-12 23:58:51 +08:00
svr-authpubkeyoptions.c Fixed compilation with unset ENABLE_{SVR,CLI}_AGENTFWD. 2012-03-26 16:17:16 +04:00
svr-chansession.c Combine code for SSH_CONNECTION and SSH_CLIENT 2014-10-21 22:33:49 +08:00
svr-kex.c Open directories O_RDONLY for fsync, add debugging if it fails 2015-01-04 22:22:43 +08:00
svr-main.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
svr-runopts.c Don't print "Failed loading hostkey" when -R delayed hostkey option is enabled 2014-10-22 07:12:52 +08:00
svr-service.c Improve capitalisation for all logged strings 2011-02-23 15:50:30 +00:00
svr-session.c Make keepalive handling more robust, this should now match what OpenSSH does 2014-08-19 23:08:56 +08:00
svr-tcpfwd.c Set tcp priority as follows: 2014-07-16 22:53:32 +08:00
svr-x11fwd.c Set tcp priority as follows: 2014-07-16 22:53:32 +08:00
sysoptions.h changelog, version number bump 2014-10-23 21:43:00 +08:00
tcp-accept.c Set tcp priority as follows: 2014-07-16 22:53:32 +08:00
tcpfwd.h - Don't use multichar constants since recent gcc complains 2014-07-27 22:55:29 +08:00
termcodes.c add IUTF8 2013-04-02 19:11:13 +08:00
termcodes.h
TODO
x11fwd.h

This is Dropbear, a smallish SSH server and client.
https://matt.ucc.asn.au/dropbear/dropbear.html

INSTALL has compilation instructions.

MULTI has instructions on making a multi-purpose binary (ie a single binary
which performs multiple tasks, to save disk space)

SMALL has some tips on creating small binaries.

See TODO for a few of the things I know need looking at, and please contact
me if you have any questions/bugs found/features/ideas/comments etc :)

Matt Johnston
matt@ucc.asn.au


In the absence of detailed documentation, some notes follow:
============================================================================

Server public key auth:

You can use ~/.ssh/authorized_keys in the same way as with OpenSSH, just put
the key entries in that file. They should be of the form:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname

You must make sure that ~/.ssh, and the key file, are only writable by the
user. Beware of editors that split the key into multiple lines.

Dropbear supports some options for authorized_keys entries, see the manpage.

============================================================================

Client public key auth:

Dropbear can do public key auth as a client, but you will have to convert
OpenSSH style keys to Dropbear format, or use dropbearkey to create them.

If you have an OpenSSH-style private key ~/.ssh/id_rsa, you need to do:

dropbearconvert openssh dropbear ~/.ssh/id_rsa  ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db <hostname>

Dropbear does not support encrypted hostkeys though can connect to ssh-agent.

============================================================================

If you want to get the public-key portion of a Dropbear private key, look at
dropbearkey's '-y' option.

============================================================================

To run the server, you need to server keys, this is one-off:
./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t dss -f dropbear_dss_host_key
./dropbearkey -t ecdsa -f dropbear_ecdsa_host_key

or alternatively convert OpenSSH keys to Dropbear:
./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key

You can also get Dropbear to create keys when the first connection is made -
this is preferable to generating keys when the system boots. Make sure 
/etc/dropbear/ exists and then pass '-R' to the dropbear server.

============================================================================

If the server is run as non-root, you most likely won't be able to allocate a
pty, and you cannot login as any user other than that running the daemon
(obviously). Shadow passwords will also be unusable as non-root.

============================================================================

The Dropbear distribution includes a standalone version of OpenSSH's scp
program. You can compile it with "make scp", you may want to change the path
of the ssh binary, specified by _PATH_SSH_PROGRAM in options.h . By default
the progress meter isn't compiled in to save space, you can enable it by 
adding 'SCPPROGRESS=1' to the make commandline.