mkj/dropbear

GitHub: mkj/dropbear

Dropbear 是一款小巧的 SSH 服务器/客户端实现,解决了嵌入式和资源受限环境中远程安全访问的轻量化需求。

Stars: 2334 | Forks: 464

## Dropbear SSH 一个小巧的 SSH 服务器与客户端 https://matt.ucc.asn.au/dropbear/dropbear.html [INSTALL.md](INSTALL.md) 包含编译说明。 [MULTI.md](MULTI.md) 包含有关制作多功能二进制程序的说明(即单个二进制程序执行多种任务,以节省磁盘空间)。 [SMALL.md](SMALL.md) 提供了一些关于创建小型二进制程序的技巧。 Dropbear 官网和 tarballs 的镜像可在 https://dropbear.nl/mirror/ 获取。 如果您有任何问题/发现 Bug/功能建议/想法/意见等,请与我联系 此外还有一个邮件列表 https://lists.ucc.asn.au/mailman/listinfo/dropbear Matt Johnston matt@ucc.asn.au ### 在缺乏详细文档的情况下,以下是一些说明 #### 服务器公钥认证 您可以像使用 OpenSSH 一样使用 `~/.ssh/authorized_keys`,只需将密钥条目放入该文件中即可。 它们应采用以下格式: ``` ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0NkyU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname ``` 您必须确保 `~/.ssh` 和密钥文件仅对当前用户可写。 请注意,某些编辑器可能会将密钥拆分成多行。 Dropbear 支持为 authorized_keys 条目配置一些选项,详情请参阅 manpage。 #### 客户端公钥认证 Dropbear 可以作为客户端进行公钥认证。 但您必须将 OpenSSH 风格的密钥转换为 Dropbear 格式,或者使用 dropbearkey 来创建它们。 如果您有一个 OpenSSH 风格的私钥 `~/.ssh/id_rsa`,您需要执行: ``` dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db dbclient -i ~/.ssh/id_rsa.db ``` 不过,Dropbear 不支持加密的 hostkeys,但可以连接到 ssh-agent。 如果您想获取 Dropbear 私钥的公钥部分,请查看 dropbearkey 的 `-y` 选项。 它会同时打印出公钥和指纹。如果您只需要公钥,可以通过前缀 `ssh-` 进行 grep 过滤: ``` ./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub ``` 要运行服务器,您需要生成服务器密钥,这是一次性操作: ``` ./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 密钥转换为 Dropbear 格式: ``` ./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key ``` 您也可以让 Dropbear 在首次建立连接时创建密钥——这比在系统启动时生成密钥更好。 确保 `/etc/dropbear/` 目录存在,然后在启动 dropbear 服务器时传入 `-R` 参数。 如果服务器以非 root 用户身份运行,您很可能无法分配 pty,并且您也无法以运行该 daemon 之外的任何其他用户身份登录(这是显而易见的)。 作为非 root 用户,Shadow passwords 也将无法使用。 Dropbear 的发行版包含一个独立版本的 OpenSSH `scp` 程序。 您可以使用 `make scp` 来编译它。 您可能需要更改 ssh 二进制文件的路径,该路径由 `options.h` 中的 `_PATH_SSH_PROGRAM` 指定。 默认情况下,为了节省空间,进度指示器(progress meter)不会被编译进去;您可以通过在 `make` 命令行中添加 `SCPPROGRESS=1` 来启用它。
标签:SSH, 内存分配, 内核驱动, 客户端, 客户端加密, 嵌入式系统, 服务器, 网络协议, 远程访问