【转载】嵌入式 Linux 移植 Dropbear SSH server
0. 背景
OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中。
Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入式”的Linux(或其他Unix)系统,如无线路由器。(一个完整的openssh大小有7M左右)。
参考:https://matt.ucc.asn.au/dropbear/dropbear.html
1. 软件下载地址
- zlib : http://www.zlib.net/
- dropbear:http://matt.ucc.asn.au/dropbear/releases/
2. 交叉编译
因为需要在宿主机上编译嵌入式arm的东西,所以编译器应该是arm的。
此处编译,包括两个部分:zlib和dropbear。dropbear依赖zlib的库,所以必须先编译zlib才可以。
2.1 zlib编译
- 1). 解压zlib:
tar -zxvf zlib1.2.8.tar.gz -C /usr/local/zlib/src (此处目录根据自己情况定义)
- 2). 进入zlib的解压目录
cd /usr/local/zlib/src
- 3). 配置zlib
./configure --prefix=/usr/local/zlib (即将zlib的库生成到该目录下)
- 4). 上面步骤做完,将会生成Makefile,vim进去,修改Makefile
CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc //你交叉编译工具的绝对路径
AR=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ar
RANLIB=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc-ranlib
LDSHARED=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map //(我只是将原来的gcc改成了我自己的编译工具,后面的参数没动过)
- 5). 执行make
- 6). 执行make install
完成以上步骤,你去/usr/local/zlib目录下看,会发现多了几个目录,代表zlib交叉编译成功!!
2.2 dropbear编译
- 1). 解压dropbear:
tar -jxvf dropbear-2016.74.tar.bz2 -C /usr/local/dropbear/src //(此处目录根据自己情况定义)
- 2). 进入dropbear的解压目录
cd /usr/local/dropbear/src
- 3). 配置dropbear
./configure --prefix=/usr/local/dropbear --with-zlib=/usr/local/zlib/ CC=/home/BvSDK/toolchain/bin/arm-openwrt-linux-gcc --host=arm //(根据自己的情况修改)
- 4). 上面步骤做完,Makefile内的CC会自动修改掉,不用再人为修改Makefile了
- 5). 执行make
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
- 6). 执行make install
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
- 7). 注意,因为默认不编译scp,PROGRAMS=xxx是强制编译出scp来,不这样干也可以,但是需要自己生成scp:
make scp
cp scp /usr/local/dropbear
完成以上步骤,你去/usr/local/dropbear目录下看,会发现多了几个目录,代表dropbear交叉编译成功!!
3. 移植到开发板
- 将/usr/local/dropbear/bin/移植到板卡的/usr/bin/下;
- 将/usr/local/dropbear/sbin/下的文件都复制到板卡的/usr/sbin/目录下
然后去板卡上执行如下操作:
cd /etc
mkdir dropbear //这个名字是固定的,千万不可变动
cd dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key
4. 嵌入式系统配置
既然弄好了dropbear,我们肯定是希望它可以开机启动喽,谁也不愿意每次开机在手动去启动这个东西吧!!!
4.1 开机启动步骤:
cd /etc/init.d/
touch dropbear_autorun
//将下面内容加入到dropbear_autorun文件
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=99
start() {
cd /usr/sbin/
./dropbear
cd -
}
//然后将该文件链接到rc.d中
cd /etc/rc.d/
ln -s ../init.d/dropbear_autorun S99dropbear
4.2 新建账号或者给root设置密码
因为SSH要求必须有密码,所以,如果板卡上可以增加新用户,则可以直接增加一个新的用户:
useradd admin
passwd admin
但是我的板卡不允许建立其它用户,只能给root赋密码了,不然SSH无法登陆
5. 问题
- 1). 如果其它主机scp、ssh到板卡有问题,你可以尝试着将文件在/usr/sbin/ 、 /usr/bin/ 和/sbin/ 目录下移动,然后再次试验,看是否有同样问题发生
- 2). scp需要移植到/usr/bin/下,不然可能其它主机无法scp推送文件到本板卡中,出现以下错误:
-ash: scp: not found
lost connection
- 3). 板卡中执行dropbear没反应
原因1:没有执行dropbearkey, 或者执行了没生成key文件
原因2:key文件不在/etc/dropbear/文件中,这个目录名称是固定死的,不可更改
以上内容转载自:www.cnblogs.com/Jimmy1988/p/9060826.html,感谢博主!
本人在选择源码时,都下载的相应的最新版本,且参照以上的操作步骤,最后成功的移植了 Dropbear。
如果在使用 passwd root 命令设置密码时,遇到 passwd: unknown uid 0 错误输出:
1)确定 /etc 是否存在 passwd 文件,且该文件是否不为空
2)如果 passwd 文件为空,则添加以下内容使 root 用户生效,随后再使用 passwd root 命令来设置密码
root:x:0:0:root:/home/root:/bin/sh
【转载】嵌入式 Linux 移植 Dropbear SSH server的更多相关文章
- 嵌入式Linux安装Dropbear SSH server
0. 背景 OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中. Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种平台 ...
- CH02基于ZYNQ的嵌入式LINUX移植
CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...
- 手把手带你基于嵌入式Linux移植samba服务
摘要:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 本文分享自华为云社区<嵌入式Linux下移植samba服务--<基于北斗和4G ca ...
- Linux下设置SSH Server设置时间链接限制
OpenSSH基于安全的理由,如果用户连线到SSH Server后闲置一段时间,SSH Server会在超过特定时间后自动终止SSH连线.本人习惯长时间连接,需要做如下修改: 1.打开ssh配置文件: ...
- 好文章!转载嵌入式LINUX
整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...
- 嵌入式Linux下BOA网页server的移植
**************************************************************************************************** ...
- 为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH
原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet ...
- 嵌入式linux移植LAMP服务器
一.工具准备工作 要想在ARM平台上移植一套Apache+Msql+PHP的Web型服务器. 所用物理机系统: Ubuntu 14.04 LTS(64位) 交叉编译环境: arm-linux-g ...
- [转载]嵌入式linux启动时运行的inittab文件
源地址:https://www.cnblogs.com/yfz0/p/5853826.html 嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要 ...
随机推荐
- SpringBoot Ajax跨域问题(session共享问题)
ajax 发送post请求至springBoot出现跨域问题 需要在springBoot加上注解 @CrossOrigin 就能解决 报错信息 前端js代码 如果用上面的方式,session不能共享 ...
- 基于 Keil MDK 移植 RT-Thread Nano
后文rtt代表RT-Thread 在官网公众号中,看到rtt发布了rtt nano,这个就很轻量级的rtos内核,把多余的驱动都裁剪了,因此移植工作量小,可以哪来学习一番,体验rtt之美 rtt现在也 ...
- NSString+URLParser NSScanner
@implementation NSString (URLParser) -(NSDictionary*)parserToDict { NSScanner *scanner = [NSScanner ...
- webpack.config.js配置信息的说明
module.exports = { entry: "./src/main.js", output: { filename: "build/build.js" ...
- Python爬虫 | xpath的安装
错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...
- 使用flow来规范javascript的变量类型
众所周知, js是弱类型的语言,由此有了很多的优点,也出现了大量由此导致的错误,难以定位.当然有类似于ts之类的语法糖来解决此问题,ts因为是从c#演变而来的,所以入门有一定的门槛,所以我们来一下fl ...
- Xamarin.Forms之主题
Xamarin.Forms应用程序可以使用DynamicResource标记扩展在运行时动态响应样式更改. 此标记扩展类似于StaticResource标记扩展,两者都使用字典键从ResourceDi ...
- luoguP4721 【模板】分治 FFT
P4721 [模板]分治 FFT 链接 luogu 题目描述 给定长度为 \(n-1\) 的数组 \(g[1],g[2],..,g[n-1]\),求 \(f[0],f[1],..,f[n-1]\),其 ...
- -bash: rvictls: command not found
下载安装Command Line Tools for Xcodehttps://developer.apple.com/download/more/?name=for%20Xcode%20-# 显示包 ...
- 使用kubectl访问kubernetes集群
之前访问k8s都是通过token进去dashboard,如下所示.但是现在希望通过kubectl访问k8s,所以还需要进一步的配置. 1. 安装kubectl命令行工具,配置环境变量,环境变量的值指向 ...