Dropbear is a relatively small SSH server and client,可运行于类Unix在系统上,官网是 Dropbear,同时在 github 上。 主要关注这里dropbear服务端功能。
安装过程简单
centos 7环境
挑一个版本下载:wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2022.82.tar.bz2 解压 ./configure 若未找到提示zlib,执行yum install zlib-devel安装,或直接禁用zlib:./configure --disable-zlib 只编译服务端,不带PROGRAMS
其他工具将额外编译:make -j8 PROGRAMS=dropbear make install dropbear被安装到/usr/local/sbin/,dbclient其他工具将安装/usr/local/bin/
启动dropbear服务端
mkdir /etc/dropbear,目录启动时没有报错,会存放在这里hostkey文件 手动生成hostkey或在启动时指定-R选项,必要时自动生成表示hostkey dropbear -p 2020 -R -s选项可禁止密码登录 dropbear同样使用~/.ssh/authorized_keys 然后就可以用了ssh客户端连接
一些编译选项
若要修改默认编译选项,cp default_options.h localoptions.h,然后通过修改localoptions.h宏来修改 编译时直接禁止密码登录 #define DROPBEAR_SVR_PASSWORD_AUTH 0 默认监听端口 #define DROPBEAR_DEFPORT "22" 默认网络接口,禁掉ipv6 #define DROPBEAR_DEFADDRESS "0.0.0.0" 禁掉MOTD(message of the day) #define DO_MOTD 0
修改authorized_keys文件
不想用~/.ssh/authorized_keys它可以通过改变代码来实现svr-authpubkey.c中的checkpubkey函数和checkpubkeyperms函数。
一个问题
首次用dropbear -FER启动(忘了是否添加-s选项),用ssh命令连接一次,dropbear自动生成/etc/dropbear/dropbear_ecdsa_host_key。我觉得有效hostkey好吧,所以直接重复使用,所以直接重复使用dropbear无参数启动,ssh命令可以直接连接,但其他命令可以直接连接,Windows下的ssh客户端工具,比如WindTerm,SecureCRT等等,都连不上。 原来hostkey与客户端协商的算法是什么?ssh命令可以优先考虑ecdsa,Windows下的ssh可以优先考虑客户端rsa。 在SecureCRT选项中Host Key项里,把“ecdsa-sha2-nistp移到首位后,256也可以连接。只留下服务端不支持的算法,SecureCRT甚至提示Key exchange failed. No compatible hostkey. The server supports these methods: ecdsa-sha2-nistp256,rsa-sha2-256,ssh-rsa”。 一直使用解决方案-R选项启动dropbear。
关于ssh config
可以在~/.ssh/下创建config例如:
Host game HostName 123.123.123.123 Port 2020 User root IdentityFile /root/id_rsa TCPKeepAlive yes ServerAliveInterval 60
以后可以直接使用ssh game连接,而不是使用-p指定端口,使用-i指定私钥文件。scp也可以使用。很方便。
另外
在试用dropbear在这个过程中,经常需要重启它。每个新连接dropbear一个新的过程已经开始处理,杀死了父亲的过程。子过程的连接不会中断,但可以使用父亲过程释放的端口。