轻量级SSH实现之Dropbear
dropbear简介
Dropbear是一个轻量级的SSH服务器和客户端的实现。它运行在 各种 UNIX 平台。
Dropbear 是开源实现,MIT 分发 许可证。
Dropbear在嵌入式Linux(或其他Unix)系统广泛应用,例如无线路由器。
特性
- 内存占用量小,适合内存受限的环境
- Dropbear 可以静态编译为 110kB 在 x86 上与 uClibc 链接二进制文件(仅选择最小选项)
- Dropbear 服务器为 OpenSSH 客户端实现 X11 转发和身份验证代理转发
- 可以从 inetd 或独立运行
- 兼容 OpenSSH
~/.ssh/authorized_keys
公钥身份验证 - server, client, keygen, 和 密钥转换器可以编译成单个二进制文件(有点像
busybox
) - 编译时可以轻松禁用功能以节省空间
- 多跳模式使用 SSH TCP 转发通过多个 SSH 建立隧道 在单个命令中托管
dbclient user1@hop1,user2@hop2,destination
平台支持
- Linux – 标准发行版, uClibc, dietlibc, musl libc, uClinux from inetd
- Mac OS X(使用 PAM 支持编译)
- FreeBSD、NetBSD 和 OpenBSD
- Solaris – 经过测试 v8 x86 和 v9 Sparc
- IRIX 6.5(使用 /dev/urandom,或者 prngd 应该可以工作)
- Tru64 5.1 (使用 prngd 计算无序状态)
- AIX 4.3.3(使用 gcc 和 Linux Affinity Toolkit),AIX 5.2(使用 /dev/urandom)。
- HPUX 11.00 (+prngd),TCP 转发不起作用
- Cygwin – 在Windows XP上测试1.5.19
如果需要在其他平台上获得支持,只需要更改一些编译配置及文件生成规则。
其他
加密代码利用Tom St Denis的LibTomCrypt,PTY处理代码取自OpenSSH,登录记录(utmp/wtmp)代码来自Andre Lucas的OpenSSH, 并从PuTTY收集了一些实现细节。
服务端公钥认证
将server端 公钥加入到~/.ssh/authorized_keys
中,公钥格式如下:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname
必须确保~/.ssh
和密钥文件只能由用户编辑,不要把key编译为多行。
Dropbear支持authorized_keys条目的一些选项,请参见手册页。
客户端公钥认证
需要将OpenSSH格式的密钥转换为Dropbear格式的,或者使用dropbearkey
工具生成。
如果你有openssh格式的私钥 ~/.ssh/id_rsa
, 你需要做如下处理:
dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db <hostname>
Dropbear不支持加密的主机密钥,但可以连接到ssh代理。
如果您想获取Dropbear私钥的公钥部分,请查看dropbearkey的-y
选项。
主机密钥使用
要运行服务器,您需要生成服务器密钥:
./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
或者将openssh的hostkey转成dropbear格式的hostkey
./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key
如果/etc/dropbear/
下存在host key, 可以在dropbear启动时,使用-R
选项代入host key。
如果server以非root身份运行,则很可能无法分配pty
,并且您不能以运行守护程序以外的任何用户身份登录(显然)。影子密码也不能为非root用户使用。
Dropbear发行版包括OpenSSH的scp
的独立版本程序您可以使用make scp
编译它,您可能需要更改ssh二进制文件的路径,由options.h
中的_PATH_SSH_PROGRAM
指定。您可以通过将SCPPROGRESS=1
添加到make命令行。
链接
SSH维基
https://en.wikipedia.org/wiki/Secure_Shell
dropbear github地址
https://github.com/mkj/dropbear
LibTomCrypt源码地址
http://www.libtom.net/LibTomCrypt/
OpenSSH官方主页
http://openssh.org/
busybox主页
https://www.busybox.net/