在Buildroot中启用SSH(OpenSSH和Dropbear两种)

一、在 Buildroot 中启用 OpenSSH

要在 Buildroot 中启用 OpenSSH 作为 SSH 服务器,请按以下步骤操作:

1. 启用 OpenSSH 包

首先,打开 Buildroot 的配置界面:

make menuconfig

进入 menuconfig 界面后,按照以下路径操作:

  • 选择 Target packages
  • 选择 Networking applications
  • 找到并启用 openssh(这是 OpenSSH 服务器和客户端的包)

选择 openssh 后,可以进一步进入 OpenSSH 的子选项来调整具体配置,如是否启用客户端、是否使用 scp 等。

2. 配置 OpenSSH

OpenSSH 需要一些基本的配置才能正常运行。你可以通过创建自定义的 SSH 配置文件来完成这一点:

  • 在根文件系统中创建 /etc/ssh/sshd_config 文件,并在其中设置 SSH 服务器的配置。例如:
PermitRootLogin yes
PasswordAuthentication yes

这将允许 root 用户登录,并启用密码验证。

3. 生成 SSH 密钥

在构建时生成 SSH 密钥是必要的。为此,你可以在目标设备首次启动时自动生成密钥。你可以通过添加脚本或修改 post-build 钩子来实现自动生成密钥。

在 Buildroot 中,你可以编写一个自定义的 post-build 脚本,将 SSH 密钥生成命令加进去。脚本可以类似于:

#!/bin/sh
mkdir -p /etc/ssh
ssh-keygen -A

你也可以在设备启动时通过命令生成密钥:

ssh-keygen -A

4. 启用 OpenSSH 服务

要确保 OpenSSH 在设备启动时自动运行,你可以修改 inittab 或添加一个 init.d 脚本。例如,在 Buildroot 中的 System configuration 中找到并配置 inittab,并确保 OpenSSH 服务被启动。通常,可以通过在 /etc/inittab 文件中添加类似以下内容来启用:

::respawn:/usr/sbin/sshd -D

这将确保 sshd 作为守护进程启动。

5. 设置 root 用户密码

如果你希望允许通过 SSH 以 root 用户身份登录,需要设置 root 用户的密码。你可以通过以下步骤设置密码:

  • System configuration 中找到并设置 root 用户的密码,或通过命令行手动设置。

6. 构建并烧录系统

完成上述配置后,重新构建 Buildroot:

make

然后将生成的映像烧录到设备上。

7. 测试 OpenSSH

系统启动后,可以通过以下命令从其他设备连接到目标设备:

ssh root@<目标设备IP>

如果配置正确,你应该可以通过 SSH 连接到设备。


二、设置 OpenSSH 开机启动

在较新的 Buildroot 版本中,inittab 的管理方式有所变化,可能不再在 System configuration 中直接提供配置选项。如果找不到 inittab 配置,您可以通过以下步骤来启用 OpenSSH 并确保它在启动时运行。

1. 使用 BusyBox 的 inittab 启动项

即使在 menuconfig 中没有找到直接的 inittab 选项,Buildroot 通常仍然使用 BusyBox 来管理系统的初始化过程。您可以手动编辑或定制 Buildroot 生成的根文件系统中的 /etc/inittab 文件。

方法一:编辑 inittab

Buildroot 默认生成的 inittab 文件位于 output/target/etc/inittab。你可以在构建后编辑这个文件,或者通过以下方式自定义它:

  1. 创建自定义 overlay 来覆盖默认的 /etc/inittab

    mkdir -p board/custom_overlay/etc/
    
    • board/custom_overlay/etc/ 中创建 inittab 文件:

      touch board/custom_overlay/etc/inittab
      
    • 编辑这个 inittab 文件,添加 OpenSSH 启动行:

      # /etc/inittab example for OpenSSH
      ::sysinit:/etc/init.d/rcS
      ::respawn:/usr/sbin/sshd -D
      
    • 将该目录指定为 Buildroot 的根文件系统覆盖目录:

      打开 menuconfig

      make menuconfig
      

      然后进入以下选项:

      System configuration -> Root filesystem overlay directories
      

      在这里输入 board/custom_overlay,确保 Buildroot 在构建根文件系统时会包含你自定义的 inittab

方法二:使用 init 脚本

如果你不想直接修改 inittab,也可以使用 init 脚本来启动 OpenSSH。你可以编写一个 init.d 脚本。

  1. 创建自定义 OpenSSH 启动脚本

    • overlay 目录下创建 /etc/init.d/S50sshd 文件:

      mkdir -p board/custom_overlay/etc/init.d/
      touch board/custom_overlay/etc/init.d/S50sshd
      
    • 编辑 S50sshd 文件,添加启动 OpenSSH 的命令:

      #!/bin/sh
      case "$1" in
          start)
              echo "Starting OpenSSH server..."
              /usr/sbin/sshd
              ;;
          stop)
              echo "Stopping OpenSSH server..."
              killall sshd
              ;;
          restart)
              echo "Restarting OpenSSH server..."
              killall sshd
              /usr/sbin/sshd
              ;;
          *)
              echo "Usage: $0 {start|stop|restart}"
              exit 1
              ;;
      esac
      exit 0
      
    • 确保该脚本是可执行的:

      chmod +x board/custom_overlay/etc/init.d/S50sshd
      
  2. overlay 添加到 Buildroot 配置中

    和方法一相同,在 menuconfig 中指定 overlay 目录。

2. 构建系统

完成所有配置后,重新构建 Buildroot:

make

生成的系统映像将包含 OpenSSH 并在启动时自动启动。

3. 烧录并测试

将生成的映像烧录到目标设备上,启动后你可以尝试通过 SSH 登录:

ssh root@<目标设备IP>

这样可以确保 OpenSSH 在系统启动时自动运行。


三、在 Buildroot 中启用 Dropbear

在 Buildroot 中启用 Dropbear(一个轻量级的 SSH 服务器和客户端)是一个相对简单的过程。以下是详细步骤:

1.启动 Buildroot 配置界面

  • 在 Buildroot 的根目录下,运行以下命令以启动配置界面:

    make menuconfig
    

2.启用 Dropbear

  • 在配置界面中,导航到 Package 菜单。
  • 选择 Networking applications
  • 找到并选择 Dropbear
  • 确保 Dropbear 被选中,并且其下的选项根据需要进行配置(例如,选择是否启用 SSH 客户端功能)。

3.配置系统

  • 导航到 System configuration
  • System configuration 中,确保 Dropbear 被启用(通常在这里你可以设置 root 密码,配置网络等)。

4.保存并退出

  • 完成配置后,保存设置并退出配置界面。

5.编译 Buildroot

  • 运行以下命令编译 Buildroot:

    make
    

6.部署和测试

  • 将编译生成的镜像和文件系统部署到目标设备上。

  • 启动目标设备,并检查 Dropbear 是否正常运行:

    ps | grep dropbear
    
  • 从主机系统尝试通过 SSH 连接到目标设备:

    ssh root@<target-ip-address>
    

7.配置 SSH 密码(如果需要):

  • 你可以通过设置 root 密码来确保能够使用 SSH 登录。默认情况下,Buildroot 的 root 密码是空的。你可以在 Buildroot 配置界面的 System configuration 中设置 root 密码。

四、Dropbear 和 OpenSSH 的区别

Dropbear 和 OpenSSH 是两种用于嵌入式系统和服务器的 SSH 实现,它们各自有一些特点和优势,适用于不同的场景。

1. 体积和资源占用

  • Dropbear:设计为轻量级 SSH 服务器,特别适用于嵌入式系统或资源有限的设备(例如路由器、IoT 设备)。二进制文件较小,内存和 CPU 占用也较低。
  • OpenSSH:功能更全,通常用于功能齐全的服务器和工作站,占用的内存和磁盘空间比 Dropbear 大。

2. 功能和特性

  • Dropbear:提供基本 SSH 功能,不支持 OpenSSH 的所有高级特性。
  • OpenSSH:功能完整,支持复杂的 SSH 配置、隧道、代理转发、加密代理等。

3. 安全性和加密

  • Dropbear:支持的加密算法较少,适合嵌入式设备的安全需求。
  • OpenSSH:支持更多种类的加密算法和认证机制,适合更高级的安全需求。

4. 启动速度

  • Dropbear:启动更快,适合嵌入式设备。
  • OpenSSH:由于功能较多,启动速度略慢,但在大多数服务器上影响不大。

5. 应用场景

  • Dropbear:适合资源有限的设备,如路由器、IoT 设备等。
  • OpenSSH:适合功能全面的服务器、工作站和需要复杂 SSH 特性的大型网络环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值