Go to file
Matt Johnston f030618543 Split CPPFLAGS and CFLAGS more carefully
This has no change to the build, but makes it easier to try
other build tools that only want CPPFLAGS
2022-03-22 16:17:05 +08:00
.github Fix accidentally commented out test matrix items 2022-02-01 22:25:51 +08:00
debian Changelog for 2020.81 2020-10-29 21:35:50 +08:00
fuzz fuzz: don't push wrapfd descriptors larger than needed 2021-03-08 21:59:10 +08:00
libtomcrypt Split CPPFLAGS and CFLAGS more carefully 2022-03-22 16:17:05 +08:00
libtommath Split CPPFLAGS and CFLAGS more carefully 2022-03-22 16:17:05 +08:00
test Handle /proc/.../maps being reordered 2022-02-03 22:13:06 +08:00
.gitignore Update .hgignore and .gitignore with tests 2021-10-18 14:26:59 +08:00
.hgignore Update .hgignore and .gitignore with tests 2021-10-18 14:26:59 +08:00
.hgsigs Added signature for changeset 5879c5829e85 2020-10-29 21:40:34 +08:00
.hgtags Added tag DROPBEAR_2020.81 for changeset 4b984c42372d 2020-10-29 21:40:27 +08:00
agentfwd.h
algo.h
atomicio.c
atomicio.h
auth.h Remove unused cli_authinitialise 2020-12-03 21:19:19 +08:00
bignum.c
bignum.h
buffer.c Remove accidentally committed abort() 2020-11-13 23:16:50 +08:00
buffer.h Add buf_decrpos() 2020-10-24 18:56:45 +08:00
chachapoly.c
chachapoly.h
CHANGES Changelog for 2020.81 2020-10-29 21:35:50 +08:00
channel.h Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
chansession.h
circbuffer.c
circbuffer.h
cli-agentfwd.c Replace ChanType.sepfds with Channel.bidir_fd 2021-10-11 15:42:14 +08:00
cli-auth.c added option to disable trivial auth methods (#128) 2021-08-19 23:37:14 +08:00
cli-authinteract.c added option to disable trivial auth methods (#128) 2021-08-19 23:37:14 +08:00
cli-authpasswd.c added option to disable trivial auth methods (#128) 2021-08-19 23:37:14 +08:00
cli-authpubkey.c added option to disable trivial auth methods (#128) 2021-08-19 23:37:14 +08:00
cli-channel.c
cli-chansession.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
cli-kex.c Add fuzzer-client_nomaths, fix client fuzzer 2020-10-18 15:08:54 +08:00
cli-main.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
cli-runopts.c Increase max window size to 10MB, fallback rather than 2021-10-12 23:32:10 +08:00
cli-session.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
cli-tcpfwd.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
common-algo.c Fix incorrect algolist TRACE print 2022-02-01 22:12:25 +08:00
common-channel.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
common-chansession.c
common-kex.c Disallow extra kexinit messages 2020-10-18 22:17:54 +08:00
common-runopts.c Increase max window size to 10MB, fallback rather than 2021-10-12 23:32:10 +08:00
common-session.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
compat.c
compat.h
config.guess Update config.sub and config.guess to latest 2021-03-31 23:21:30 +08:00
config.h.in Add re-exec for server 2022-01-30 10:14:56 +08:00
config.sub Update config.sub and config.guess to latest 2021-03-31 23:21:30 +08:00
configure Add re-exec for server 2022-01-30 10:14:56 +08:00
configure.ac Add re-exec for server 2022-01-30 10:14:56 +08:00
crypto_desc.c Use Dropbear's random source rather than libtommath's platform 2020-10-19 22:49:19 +08:00
crypto_desc.h
curve25519.c
curve25519.h
dbclient.1 Some minor manpage improvements 2020-12-05 14:56:53 +08:00
dbhelpers.c
dbhelpers.h
dbmalloc.c
dbmalloc.h Define _GNU_SOURCE properly, other header fixes 2021-03-04 21:03:02 +08:00
dbmulti.c Fix regression in non-symlink dropbearmulti 2022-02-01 23:15:53 +08:00
dbrandom.c Fuzzing - get rid of "prefix" for streams 2020-11-01 23:44:58 +08:00
dbrandom.h
dbutil.c Use HOME before /etc/passwd to find id_dropbear (#137) 2021-10-19 13:02:47 +08:00
dbutil.h Make re-exec work with "dropbearmulti dropbear" 2022-02-01 22:19:49 +08:00
debug.h
default_options.h Add re-exec for server 2022-01-30 10:14:56 +08:00
DEVELOPING.md
dh_groups.c
dh_groups.h
dropbear_lint.sh
dropbear.8 Clarify help text for dropbear -e environment option 2021-08-19 23:17:34 +08:00
dropbearconvert.1
dropbearconvert.c
dropbearkey.1
dropbearkey.c
dss.c
dss.h
ecc.c
ecc.h
ecdsa.c Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
ecdsa.h
ed25519.c Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
ed25519.h Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
fake-rfc2553.c
fake-rfc2553.h
filelist.txt
fuzz-wrapfd.h fuzz: wrap kill() 2021-01-29 21:47:56 +08:00
fuzz.h fuzz: fix crash in newtcpdirect(), don't close the channel too early 2021-03-05 22:51:11 +08:00
FUZZER-NOTES.md
fuzzers_test.sh fuzz: add -q quiet argument for standalone fuzzers. 2021-03-07 21:26:34 +08:00
gcm.c
gcm.h
gendss.c
gendss.h
gened25519.c
gened25519.h
genrsa.c
genrsa.h
gensignkey.c
gensignkey.h
ifndef_wrapper.sh
includes.h Add re-exec for server 2022-01-30 10:14:56 +08:00
INSTALL Add configure script to version control. Set timezone for release tarball 2021-03-31 23:23:14 +08:00
install-sh
kex.h
keyimport.c Add buf_decrpos() 2020-10-24 18:56:45 +08:00
keyimport.h
LICENSE
list.c
list.h
listener.c Fix null pointer dereference removing listeners 2020-12-07 20:03:24 +08:00
listener.h
loginrec.c
loginrec.h
ltc_prng.c
ltc_prng.h
Makefile.in Split CPPFLAGS and CFLAGS more carefully 2022-03-22 16:17:05 +08:00
MULTI
netio.c Merge netio changes 2022-01-27 15:09:29 +08:00
netio.h Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
options.h
packet.c Load password and key for client fuzzer. 2020-10-20 23:34:38 +08:00
packet.h
process-packet.c
progressmeter.c
progressmeter.h
pubkeyapi.h
queue.c
queue.h
README
release.sh Don't include .hg_archival.txt in tarballs. They're now reproducible. 2021-03-31 23:31:26 +08:00
rsa.c
rsa.h
runopts.h Add re-exec for server 2022-01-30 10:14:56 +08:00
scp.c Remove unused argument of do_cmd() in scp.c (#125) 2021-08-19 23:40:58 +08:00
scpmisc.c
scpmisc.h
service.h
session.h added option to disable trivial auth methods (#128) 2021-08-19 23:37:14 +08:00
signkey.c Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
signkey.h Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
sk-ecdsa.c Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
sk-ecdsa.h Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
sk-ed25519.c Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
sk-ed25519.h Implement server-side support for sk-ecdsa U2F-backed keys (#142) 2022-01-22 21:53:04 +08:00
SMALL
ssh.h
sshpty.c
sshpty.h
svr-agentfwd.c Replace ChanType.sepfds with Channel.bidir_fd 2021-10-11 15:42:14 +08:00
svr-auth.c Define _GNU_SOURCE properly, other header fixes 2021-03-04 21:03:02 +08:00
svr-authpam.c
svr-authpasswd.c
svr-authpubkey.c Add buf_decrpos() 2020-10-24 18:56:45 +08:00
svr-authpubkeyoptions.c Add "restrict" authorized_keys option 2021-05-01 20:47:15 +08:00
svr-chansession.c Make missing homedir non-fatal, instead use / 2022-02-24 11:51:51 +08:00
svr-kex.c
svr-main.c Avoid unused argument warning when reexec is unused 2022-02-03 22:12:11 +08:00
svr-runopts.c Add re-exec for server 2022-01-30 10:14:56 +08:00
svr-service.c
svr-session.c Fix some outdated comments 2021-10-11 15:14:46 +08:00
svr-tcpfwd.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
svr-x11fwd.c Replace ChanType.sepfds with Channel.bidir_fd 2021-10-11 15:42:14 +08:00
sysoptions.h Fix -Wexpansion-to-defined failure on clang 2022-01-30 10:23:06 +08:00
tcp-accept.c Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
tcpfwd.h Leave non-interactive at default QoS class 2022-01-27 14:34:10 +08:00
termcodes.c
termcodes.h
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.

Please contact me if you have any questions/bugs found/features/ideas/comments etc :)
There is also a mailing list http://lists.ucc.gu.uwa.edu.au/mailman/listinfo/dropbear

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 generate 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
./dropbearkey -t ed25519 -f dropbear_ed25519_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.