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, 内存分配, 内核驱动, 客户端, 客户端加密, 嵌入式系统, 服务器, 网络协议, 远程访问