轻量级SSH实现之Dropbear

news/2024/4/29 18:54:53/文章来源:https://blog.csdn.net/u011897062/article/details/129137949

轻量级SSH实现之Dropbear

dropbear简介

Dropbear是一个轻量级的SSH服务器和客户端的实现。它运行在 各种 UNIX 平台。
Dropbear 是开源实现,MIT 分发 许可证。
Dropbear在嵌入式Linux(或其他Unix)系统广泛应用,例如无线路由器。
dropbear ssh

特性

  • 内存占用量小,适合内存受限的环境
  • Dropbear 可以静态编译为 110kB 在 x86 上与 uClibc 链接二进制文件(仅选择最小选项)
  • Dropbear 服务器为 OpenSSH 客户端实现 X11 转发和身份验证代理转发
  • 可以从 inetd 或独立运行
  • 兼容 OpenSSH ~/.ssh/authorized_keys 公钥身份验证
  • server, client, keygen, 和 密钥转换器可以编译成单个二进制文件(有点像 busybox)
  • 编译时可以轻松禁用功能以节省空间
  • 多跳模式使用 SSH TCP 转发通过多个 SSH 建立隧道 在单个命令中托管
dbclient user1@hop1,user2@hop2,destination

平台支持

  • Linux – 标准发行版, uClibc, dietlibc, musl libc, uClinux from inetd
  • Mac OS X(使用 PAM 支持编译)
  • FreeBSD、NetBSD 和 OpenBSD
  • Solaris – 经过测试 v8 x86 和 v9 Sparc
  • IRIX 6.5(使用 /dev/urandom,或者 prngd 应该可以工作)
  • Tru64 5.1 (使用 prngd 计算无序状态)
  • AIX 4.3.3(使用 gcc 和 Linux Affinity Toolkit),AIX 5.2(使用 /dev/urandom)。
  • HPUX 11.00 (+prngd),TCP 转发不起作用
  • Cygwin – 在Windows XP上测试1.5.19
    如果需要在其他平台上获得支持,只需要更改一些编译配置及文件生成规则。

其他

加密代码利用Tom St Denis的LibTomCrypt,PTY处理代码取自OpenSSH,登录记录(utmp/wtmp)代码来自Andre Lucas的OpenSSH, 并从PuTTY收集了一些实现细节。

服务端公钥认证

将server端 公钥加入到~/.ssh/authorized_keys中,公钥格式如下:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname

必须确保~/.ssh和密钥文件只能由用户编辑,不要把key编译为多行。
Dropbear支持authorized_keys条目的一些选项,请参见手册页。

客户端公钥认证

需要将OpenSSH格式的密钥转换为Dropbear格式的,或者使用dropbearkey工具生成。
如果你有openssh格式的私钥 ~/.ssh/id_rsa, 你需要做如下处理:

dropbearconvert openssh dropbear ~/.ssh/id_rsa  ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db <hostname>

Dropbear不支持加密的主机密钥,但可以连接到ssh代理。
如果您想获取Dropbear私钥的公钥部分,请查看dropbearkey的-y选项。

主机密钥使用

要运行服务器,您需要生成服务器密钥:

./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的hostkey转成dropbear格式的hostkey

./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key

如果/etc/dropbear/下存在host key, 可以在dropbear启动时,使用-R 选项代入host key。

如果server以非root身份运行,则很可能无法分配pty,并且您不能以运行守护程序以外的任何用户身份登录(显然)。影子密码也不能为非root用户使用。

Dropbear发行版包括OpenSSH的scp的独立版本程序您可以使用make scp编译它,您可能需要更改ssh二进制文件的路径,由options.h中的_PATH_SSH_PROGRAM指定。您可以通过将SCPPROGRESS=1添加到make命令行。

链接

SSH维基
https://en.wikipedia.org/wiki/Secure_Shell

dropbear github地址
https://github.com/mkj/dropbear

LibTomCrypt源码地址
http://www.libtom.net/LibTomCrypt/

OpenSSH官方主页
http://openssh.org/

busybox主页
https://www.busybox.net/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_260730.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element table合计定制化

element table合计定制化 el-table 中加入 show-summary :summary-method“getSummaries” <el-table :datatableData show-summary :summary-method"getSummaries" border stylewidth: 100% max-height"271px" v-loadingtableLoading show-overflow-to…

NeMo简介

NeMo简介 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录NeMo简介1.系统环境2.快速开始3.安装PIP安装Pip from source源代码安装docker方式安装NVIDIA NeMo 是一个用于构建新的最先进的对话式 AI 模型的工具包。 NeMo 有自动语音识别 (ASR)、…

【IoT】智能硬件设计:遥控窗帘设计

本设计是基于STC89C51单片机的遥控窗帘。它采用按键和无线遥控两种控制方式&#xff0c;其中SC2262/SC2272 编码解码芯片组成无线发送接收模块&#xff1b;通过控制直流电机的正反转来控制窗帘的开关&#xff0c;并且可以指示运行状态&#xff1b;利用限位开关来控制窗帘停止&a…

SQL零基础入门学习(三)

SQL零基础入门学习&#xff08;二&#xff09; SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录。 SQL WHERE 语法 SELECT column1, column2, ... FROM table_name WHERE condition;参数说明&#xff1a; column1, column2, …&#xff1a;要选择的字段名称&…

教你数分钟内创建并运行一个 DolphinScheduler Workflow

点击蓝字 关注我们作者 | 鲍亮&#xff0c;Apache DolphinScheduler PMC Member01Workflow是什么&#xff1f;对于数仓场景和数据湖场景来说&#xff0c;最显著的特点就是数据处理的长流程和高复杂度任务依赖关系&#xff0c;从源数据采集到最终报表数据的生成&#xff0c;中间…

软件工程 | 第一章:软件工程学概述

软件工程学概述一、前言二、软件危机1.典型表现2.产生原因3.消除危机途径三、软件工程1.概述2.软件本质特征3.软件工程基本原理4.软件工程方法学1️⃣传统方法学2️⃣面向对象方法学四、软件生命周期五、结语一、前言 本文将讲述软件工程导论的第一章相关知识点&#xff0c;主…

第一个Java程序(初识Java)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录1.Java概述1.1什么是Java1.2Java之父2.0第一个Java程序编译运行.class3.0程序如何跑起来的&#xff1f;3.1J…

加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10)

不用说火爆一时&#xff0c;全网热议的Web3.0区块链技术&#xff0c;也不必说诸如微信支付、支付宝支付等人们几乎每天都要使用的线上支付业务&#xff0c;单是一个简简单单的注册/登录功能&#xff0c;也和加密技术脱不了干系&#xff0c;本次我们耙梳各种经典的加密算法&…

uniapp 原生安卓开发插件(module),以及android环境本地调试(二)

uniapp 原生安卓开发插件&#xff08;module&#xff09;&#xff0c;以及android环境本地调试&#xff08;一&#xff09; 1、前景 承接上一篇文章&#xff0c;由于uniapp每天只有限定的打包次数&#xff0c;所以每次插件调试都打包成为基座&#xff0c;这个不太方便&#x…

Java的Annotation接口

PS&#xff1a; 该博客将涉及Google Guice的一些知识&#xff0c;但不要惊慌&#xff0c;即使你从未了解过Guice&#xff0c;也能正常阅读该博客 1. 序言 学习Java注解时&#xff0c;曾提到&#xff1a;所有的注解都将继承java.lang.annotation.Annotation接口&#xff0c;无法…

Android自动化测试(UiAutomator)——UiObject

本文主要讲解使用UiAutomator的一些技巧&#xff0c;希望对于初学者有一定的帮助 UiObject 1、首先要声明对象 UiObject XXX new UiObject(new Selector) ; 2、其次对对象进行操作 操作类型包括&#xff1a; 执行类&#xff1a;文本输入与清除、点击/长按、拖动/滑动、 …

安装配置RabbitMQ(Win11)

一、安装依赖Erlang打开RabbitMQ官网&#xff1a;https://www.rabbitmq.com/点击Get Started点击Download Installation点击 Chocolatey or Installer点击? Erlang/OTP Version Tree点击win64下载完成后&#xff0c;右击“以管理员身份”安装配置Erlang环境变量 &#xff1a;…

Mybatis的介绍和基本使用

目录 数据库操作框架的历程 JDBC Hibernate JDBCTemplate 什么是Mybatis 快速搭建Mybatis项目 创建普通的maven项目 导入相关的依赖 创建对应的数据表 创建与表对应的实体类对象 创建对应的Mapper接口 编写配置文件 编写测试类 增删改查的基本操作 数据库操作框…

Java线程的6 种状态

Java 线程的状态 Java线程有六种状态&#xff1a; 初始&#xff08;NEW&#xff09;、运行&#xff08;RUNNABLE&#xff09;、阻塞&#xff08;BLOCKED&#xff09;、 等待&#xff08;WAITING&#xff09;、超时等待&#xff08;TIMED_WAITING&#xff09;、终止&#xff08…

vue-router 的基本用法

vue-router 的基本用法 1.什么是 vue-router vue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用&#xff0c;能够轻松的管理 SPA 项目中组件的切换。 vue-router 的官方文档地址&#xff1a;https://router.vuejs.org/zh/ 2.vue-router 安装和配置的…

MacBook IDEA 顶部菜单栏不显示问题

文章目录背景&#xff1a;当前显示方式一1. 快捷键&#xff1a;双击shift 搜索 idea.vmoptions3. 在idea.vmoptions文件末尾添加 -Dapple.laf.useScreenMenuBarfalse方式二1. 访达 > 应用程序 > idea 右键 显示包内容2. 进入到bin包位置的命令终端3. 编辑文件 vi idea.pr…

EasyExcel 低内存导出大数据量的Excel方案探索 50万行 50列 (附:实现代码)

文章目录1.前言2.准备工作3.导出测试3.1.单次查询、全量导出3.2. 多次查询&#xff0c;多个文件&#xff0c;单次写入3.3.多次查询&#xff0c;多个文件&#xff0c;多次写入3.4.多线程导出探索3.5.文件打包成ZIP3.6.响应给客户4.实现代码5.结语1.前言 最近接到一个需求&#…

多元化增长引擎业务占比超四成,联想开启混动模式?

一句话概括联想集团的业绩&#xff1a;预料之内的整体下滑&#xff0c;超出预期的第二曲线。 上周五&#xff08;2月17日&#xff09;&#xff0c;联想集团发布了2022到2023财年第三季度业绩。根据财报&#xff0c;联想集团实现营收152.67亿美元&#xff0c;同比下降24%&#…

【机器学习】决策树-Gini指数

1. CART树 分类回归树(CART,Classification And Regression Tree)算法是一种决策树分类方法。CART每一个节点上都采用二分法&#xff0c;采用一种二分递归分割的技术&#xff0c;CART生成的树必须是二叉树&#xff0c;也就是无论回归还是分类&#xff0c;无论特征离散还是连续&…

15-基础加强3-单元测试日志

文章目录1.单元测试1.1概述【理解】1.2特点【理解】1.3使用步骤【应用】1.4相关注解【应用】2.日志2.1概述【理解】2.2日志体系结构和Log4J【理解】2.3入门案例【应用】1.单元测试 1.1概述【理解】 JUnit是一个 Java 编程语言的单元测试工具。JUnit 是一个非常重要的测试工具…