的dropbear
该套件同时提供了ssh服务器和客户端应用程序(dbclient),并代表了OpenSSH
。由于它占用空间小且很好地利用系统资源,因此通常用于内存和处理能力有限的嵌入式设备(例如路由器或嵌入式设备),而优化是关键因素。它提供了很多功能,例如X11 forwarding
,并且与OpenSSH
公钥认证。在本教程中,我们将看到如何在Linux上安装和配置它。
在本教程中,您将学习:
- 如何在Linux上安装和配置Dropbear
- 如何使用dropbearkey,dropbearconvert和dbclient实用程序
使用的软件要求和约定
类别 | 使用的要求,约定或软件版本 |
---|---|
系统 | Distribution-independent(配置可能有所不同) |
软件 | 除dropbear之外,无需其他软件即可遵循本教程(请参阅下面的安装说明) |
其他 |
|
约定 | #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求linux命令以普通非特权用户身份执行 |
安装
正在安装dropbear
这是一个非常简单的任务,因为它在所有主要的Linux发行版中都可用。我们要做的就是使用我们最喜欢的分发程序包管理器。例如,在Debian及其衍生产品(例如Ubuntu)上,我们可以使用apt
:
$ sudo apt install dropbear
在最新版本的fedora中,我们可以使用dnf
套餐经理:
$ sudo dnf install dropbear
Dropbear在Archlinux上的”community”存储库中可用,我们可以通过安装它pacman
:
$ sudo pacman -S dropbear
通过添加以下内容,还可以在Red Hat Enterprise Linux 7和CentOS 7上安装dropbear软件包。Epel
附加存储库,然后使用yum
套餐经理:
$ sudo yum install dropbear
不幸的是,尽管Epel
专用于最新版本的存储库RHEL
(8)已被发布,它还不包含dropbear软件包。仍然可以在Rhel 8上安装Epel 7,但必须谨慎进行。
配置dropbear
dropbear服务不会从专用文件(如OpenSSH)读取其配置。我们可以通过使用适当的命令行选项启动程序来简单地修改程序的行为。我们如何指定选项取决于我们使用的分布。
例如,在Ubuntu上,我们修改/etc/default/dropbear
文件。其内容如下:
# the TCP port that Dropbear listens on
DROPBEAR_PORT=22
# any additional arguments for Dropbear
DROPBEAR_EXTRA_ARGS=
# specify an optional banner file containing a message to be
# sent to clients before they connect, such as "/etc/issue.net"
DROPBEAR_BANNER=""
# RSA hostkey file (default: /etc/dropbear/dropbear_rsa_host_key)
#DROPBEAR_RSAKEY="/etc/dropbear/dropbear_rsa_host_key"
# DSS hostkey file (default: /etc/dropbear/dropbear_dss_host_key)
#DROPBEAR_DSSKEY="/etc/dropbear/dropbear_dss_host_key"
我们可以在此文件中配置的第一件事是DROPBEAR_PORT
变量,用于设置守护程序应侦听的端口(默认为port22
)。
的DROPBEAR_EXTRA_ARGS
变量可用于指定将传递给dropbear的选项。例如说我们要禁用密码登录。我们可以通过使用-s
选项(有关完整的选项列表,请参阅dropbear手册),因此我们编写:
DROPBEAR_EXTRA_ARGS="-s"
的DROPBEAR_BANNER
选项可用于指定一个文件,该文件包含要在客户端尝试连接到服务器时向客户端显示的消息(可以通过使用-b
选项)。
最后,DROPBEAR_RSAKEY
和DROPBEAR_DSSKEY
变量,我们可以为RSA
和DSS
服务器密钥,默认为/etc/dropbear/dropbear_rsa_host_key
和/etc/dropbear/dropbear_dss_host_key
分别。密钥由程序在安装过程中自动生成。dropbearkey
实用程序(请继续阅读以了解如何使用它)。
在Fedora上,以不同的方式管理选项。如果我们看一下dropbear
用于配置服务的systemd单元,我们可以遵循以下指令:
$ systemctl cat dropbear.service
systemctl cat dropbear
# /usr/lib/systemd/system/dropbear.service
[Unit]
Description=Dropbear SSH Server Daemon
Documentation=man:dropbear(8)
Wants=dropbear-keygen.service
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/dropbear
ExecStart=/usr/sbin/dropbear -E -F $OPTIONS
[Install]
WantedBy=multi-user.target
如果我们看一下[Service]
节,我们可以看到EnvironmentFile
伪指令,用于指定源于环境变量的文件。在这种情况下,文件为/etc/sysconfig/dropbear
(默认情况下它不存在,因此我们必须创建它)。正如我们可以推断出的ExecStart
指令,命令选项通过扩展$OPTIONS
变量:必须在上述文件中定义。
让我们来看一个例子。假设我们想在用户尝试连接时显示一条消息。要完成任务,我们必须使用dropbear-b
选项并指定一个文件,其中包含要显示为参数的消息。假设此文件是”/etc/banner”(路径是任意的),/etc/sysconfig/dropbear
我们写的文件:
OPTIONS="-b /etc/banner"
每次进行更改时,都必须重新启动服务以使其生效。我们将在下一段中看到如何做。
管理Dropbear服务器
在某些发行版中(例如Ubuntu),dropbear守护程序会在安装过程中自动启动并在启动时自动启用。要验证dropbear服务的状态,我们可以运行以下命令:
# Check if the service is active
$ systemctl is-active dropbear
active
# Check if the service is enabled
$ systemctl is-enabled dropbear
enabled
要手动激活或启用服务,我们使用以下命令:
# Start the service
$ sudo systemctl start dropbear
# Enable the service at boot
$ sudo systemctl enable dropbear
# Do both actions with one command:
$ sudo systemctl enable --now dropbear
如前所述,无论何时更改配置参数,都需要重新启动服务器。我们要做的就是运行:
$ sudo systemctl restart dropbear
Dropbear实用程序
dropbear应用程序带有一些有用的实用程序。让我们来看看:
快捷键
我们已经看到了dropbear-key
用于生成专用服务器密钥。使用该实用程序时,必须指定要生成的密钥的类型,其中之一rsa
,ecdsa
和dss
与-t
选项和用于密钥的目标文件。我们还可以使用位指定密钥大小(应为8的倍数)。-s
选项。让我们来看一个例子。
产生一个4096
私人位rsa key
到名为”key”的文件,我们可以运行:
$ dropbearkey -t rsa -s 4096 -f key
该命令生成密钥并在屏幕上显示其公共部分。您也可以稍后使用-y
的选择dropbearkey
。该选项可能很有用,例如,生成包含公钥的文件。我们要做的就是重定向命令的输出。我们可以运行:
$ dropbearkey -y -f key | grep ^ssh-rsa > key_public
dropbearconvert
的dropbearconvert
该实用程序用于在Dropbear和OpenSSH私钥格式之间进行转换。使用该应用程序时,我们需要提供:
- input_type:应该转换的密钥的类型,可以是dropbear或openssh;
- output_type:密钥应转换为dropbear或openssh的类型;
- input_file:要转换的密钥的路径;
- output_file:转换后的密钥的目标路径。
数据库客户端
要连接到dropbear ssh服务器,我们可以同时使用ssh
,这是由提供的客户端OpenSSH
,或本地dropbear客户:dbclient
。后者支持我们期望的所有选项。除其他外,我们可以使用-p
用于指定要连接的备用服务器端口的选项,或-i
指定一个 identity file
用于连接。使用以下命令连接到Dropbear服务器dbclient
我们可以运行:
$ dbclient egdoc@192.168.122.176
Host '192.168.122.176' is not in the trusted hosts file.
(ecdsa-sha2-nistp521 fingerprint md5
5e:fa:14:52:af:ba:19:6e:2c:12:75:65:10:8a:1b:54)
Do you want to continue connecting? (y/n) y
egdoc@192.168.122.176's password:
结论
在本教程中,我们了解了dropbear,这是一种更轻巧的替代方法。的openssh服务器。 Dropbear具有一整套功能,例如X11转发,特别适合安装在资源有限的系统上,例如路由器或嵌入式设备。我们看到了如何在主要的Linux发行版上安装该程序,如何通过指定应与之一起运行的选项来修改服务器行为。
最后,我们看了dropbear套件随附的一些实用程序,例如dropbearkey
,dropbearconvert
和dbclient
。前两个分别用于生成私钥和将密钥从openssh格式转换为dropbear格式(反之亦然)。第三个是小型客户,可以替代ssh
。