openssh arm linux 编译,openssh编译安装到ARM嵌入式系统中

目录

一.SSHD编译(此步骤在虚拟机上执行)

1.1 在/root/目录下创建ssh目录

1.2 交叉编译zlib

1.3交叉编译openssl

1.4交叉编译openssh

二.移植(此步骤在开发板上执行)

2.1 在开发板上建立需要的目录

2.2 下面是在开发板上操作

2.3修改sshd_config

三、加入自启动脚本

参考:

注:如果想自行编译移植,即可从第一步开始;若已有sshd 、sftp-server、密钥等文件则直接进行第二个步骤;相关源码及编译后的文件在附件中可见。

一.SSHD编译(此步骤在虚拟机上执行)

源码包:zlib-1.2.3.tar.bz2

openssl-0.9.81.tar.gz

openssh-4.6p1.tar.gz

说明:本次只移植SSH的服务端,客户端相关程序和配置文件不拷贝到开发板。

1.1 在/root/目录下创建ssh目录

#mkdir /root/ssh

#cd /root/ssh

#mkdir compressed install source注:compressed用于存放源码包

install软件安装目录

source源码包解压目录

将三个源码包拷贝到compressed目录下。

1.2交叉编译zlib

# tar -jxvf zlib-1.2.3.tar.bz2  -C  ../source

# cd ../source/zlib-1.2.3

# ./configure --prefix=/root/ssh/install/zlib-1.2.3

# vi Makefile       //修改Makefile中的某些变量值,指定自己的交叉编译工具

CC=arm-linux-gnueabihf-gcc

CPP=arm-linux-gnueabihf-gcc -E

AR=arm-linux-gnueabihf-ar rc

LDSHARED=arm-linux-gnueabihf-gcc

保存退出执行make

make install

1.3交叉编译openssl

# cd /root/ssh/compressed/

# tar -zxvf openssl-0.9.81.tar.gz  -C  ../source

# cd ../source/openssl-0.9.81

#./Configure  --prefix=/root/ssh/install/openssl-0.9.81  os/compiler:arm-linux-gnueabihf-gcc

执行make(如果遇到错误输入rm -f /usr/bin/pod2man)

make install(如果遇到错误输入rm -f /usr/bin/pod2man)

1.4交叉编译openssh

# cd /root/ssh/compressed

# tar -zxvf openssh-4.6p1.tar.gz  -C ../source

# cd ../source/openssh-4.6p1

#./configure --host=arm-linux-gnueabihf --with-libs                                 --with-zlib=/root/ssh/install/zlib-1.2.3/ --with-ssl-dir=/root/ssh/install/openssl-0.9.81 --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar

#make注:不要make install

这时在/root/ssh/source/ openssh-4.6p1/目录下生成了sshd、sftp-server、密钥等文件。

可以用strip工具把sshd体积变小,以节省空间,操作如下:

#arm-linux-gnueabihf-strip -s sshd

还需要建立密钥(用ssh-keygen工具):

#ssh-keygen -t rsa1 -f ssh_host_key -N ""

#ssh-keygen -t rsa -f ssh_host_rsa_key -N ""

#ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

会生成这六个密钥文件:

ssh_host_dsa_key

ssh_host_dsa_key.pub

ssh_host_key

ssh_host_key.pub

ssh_host_rsa_key

ssh_host_rsa_key.pub

二.移植(此步骤在开发板上执行)

2.1 在开发板上建立需要的目录

#mkdir -p /usr/local/etc

#mkdir -p /var/run /var/empty/sshd  并设定权限chmod 755 /var/empty

把在虚拟机下 /root/ssh/source/openssh-4.6p1生成的服务端相关文件拷贝到开发板相应目录下:

sshd和 sftp-server复制到开发板的/sbin/目录下

生成的六个密钥文件和sshd_config复制到/usr/local/etc/目录下

进入/usr/local/etc/目录下,修改权限:

# chmod 0644 *

# chmod 0600 ssh_host_dsa_key  ssh_host_key  ssh_host_rsa_key

2.2 下面是在开发板上操作

修改/etc/目录下的passwd和group文件,添加sshd用户和组

#vi /etc/passwd

在最后一行添加sshd:*:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

保存退出。

#vi /etc/group

在最后一行添加sshd:*:74:

保存退出。

2.3修改sshd_config

分别去掉下列语句前的注释号(即去掉#号)并修改为:

PermitRootLogin    yes―――――允许根用户登陆

PermitEmptyPasswords yes――――允许使用空密码

UsePrivilegeSeparation   no――――把安全级别降低,因为不会连接互联网

同时修改sftp-server的存放路径为 /sbin/sftp-server

3f288ee285423cc6e29fa526842ca321.png

运行sshd时要用绝对路径

#/sbin/sshd

这样可以在windows下用ssh客户端进行连接了。

三、加入自启动脚本

/etc/init.d目录下新建sshd文件

#! /bin/sh

sshd=/sbin/sshd

test -x "$sshd" || exit 0

case "$1" in

start)

echo -n "Starting sshd daemon"

start-stop-daemon --start --quiet --exec $sshd -b

echo "."

;;

stop)

echo -n "Stopping sshd"

start-stop-daemon --stop --quiet --exec $sshd

echo "."

;;

restart)

echo -n "Stopping sshd"

start-stop-daemon --stop --quiet --exec $sshd

echo "."

echo -n "Waiting for sshd to die off"

for i in 1 2 3 ;

do

sleep 1

echo -n "."

done

echo ""

echo -n "Starting sshd daemon"

start-stop-daemon --start --quiet --exec $sshd -b

echo "."

;;

*)

echo "Usage: /etc/init.d/sshd {start|stop|restart}"

exit 1

esac

exit 0

进入/etc/init.d目录执行命令

cd /etc/init.d

ln -sf ../init.d/sshd ../rc5.d/S30sshd

ln -sf ../init.d/sshd ../rc3.d/S30sshd

即可实现开机自动启动sshd服务。

源码下载: https://download.csdn.net/download/v6543210/10746939

参考:

1.Linux嵌入式学习-交叉编译openssl

https://www.cnblogs.com/ynxf/p/6375091.html

linux系统的7种运行级别

https://blog.csdn.net/ccfxue/article/details/52767863

/etc/rc.d/init.d自启动程序说明

https://blog.csdn.net/xysoul/article/details/44956525

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

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

相关文章

linux gui编程语言,使用 Red 语言编写 GUI 应用程序

一句话概括 — 使用 Red 语言编写原生跨平台桌面 GUI。尝试在 Windows 上使用 PyInstaller 将“可执行”的 ducktape 封装在 Python 脚本之后,我发现应该学习的编程语言类应该具有以下属性:静态二进制编译(产生一个二进制,不是运行时的字节码…

对c语言字符数组描述错误的是,下述对C语言字符数组的描述中错误的是( )。

摘要:条形图用频率值型来表分组分布示数数据,下述没有相邻之间间隔竖条。中国:在中大学列联分析,字符百分表的条件正确关于的是方向说法。条形图用频率值型来表分组分布示数数据,数组述中没有相邻之间间隔竖条。...条形图用频率值…

android 实现自动拍照,Android自定义相机实现定时拍照功能

这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能。首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件:activity_main.xmlandroid:layout_width"match_parent"android:layout_height"match_…

android版本8.1.0和9的区别,安卓8.1和9.0的区别是什么

安卓8.1和9.0的主要差别是:流畅度、耗电量、功能等等方面的不同。在手机配置足够的情况下,9.0要比8.1更流畅和省电,它可以同时让后台保持更多APP,每个APP运行的时候更加流畅,其新的智能电量管理功能、暗黑模式让手机更…

看到一个沙粒世界:再一次你好世界

“看到一个沙粒中的世界”,我们很可能会看到最简单的“ Hello World”中的世界,所以我们开始吧,再一次向世界问好。 我猜所有的Java课程,教程都是从这个著名的Hello World程序开始的,这是我可以在没有IDE的帮助下编写…

moreunit_MoreUnit与MoreUnit

moreunit就在一年多以前,我写了一篇关于在Eclipse中使用JUnit的文章。 评论者之一推荐MoreUnit ,以进一步提高测试效率。 尝试一下让我感到很高兴,并且我的自主神经系统立即记住了该插件的键盘快捷键…… 另外,在使用MoreUnit一段…

JMetro版本5发布

Java的第5版JavaFX主题JMetro刚刚发布。 这是此版本中的新功能: 新的文本区域明暗风格; 现有控件样式的一些更改; 新CSS变量称为accent_color。 顾名思义,它允许您定义JMetro控件中使用的强调颜色。 已经进行了很大的重构&am…

android 开发 矩形截屏插件,Android 上如何实现矩形区域截屏

对屏幕进行截屏并裁剪有两种方式:早截图和晚截图。早截图,就是先截取全屏,再让用户对截取到的图片进行修改;与之相对的,晚截图,就是先让用户在屏幕上划好区域,再进行截图和裁剪。其实两者并没有什么太大的区…

Java可选参数

在Java类中设计方法时,某些参数对于其执行而言可能是可选的。 无论是在DTO,胖模型域对象还是简单的无状态服务类中,可选方法参数都是常见的。 从本文中, 您将学习如何在Java中处理可选参数 。 我们将专注于常规方法,带…

计算机发送到桌面快捷方式,windows7添加到桌面快捷方式无故消失!

您好,Windows 7设计者在Windows 7中所添加的设计。在默认情况下,只要System Maintenance troubleshooter(系统故障维护,以下简称SMT)检测到桌面的快捷方式已经无效了,将会自动将其删除。每周,SMT(系统故障维护)都会对操…

Java:汇总堆外数据

探索如何以最小的垃圾收集影响和最大的内存利用率创建堆​​外聚合。 使用Java Map,List和Object创建大型聚合通常会产生大量堆内存开销。 这也意味着,一旦聚合超出范围,垃圾收集器将必须清理这些对象。 阅读这篇简短的文章,了解…

java中属性外部化_用Java可外部化

java中属性外部化在理解Externalizable接口之前,您需要了解序列化。您可以在java中的序列化上阅读有关序列化的更多信息。 Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的…

在您的Maven-Fu包中增加了一些东西

Apache Maven很简单,但是功能非常强大。 使用一些技巧,您可以大大简化和优化您的开发经验。 处理多个非托管模块 假设您有一个主项目A提供了两个实用程序模块foo和bar ,另一个项目B A了foo和bar 。 在使用B ,您意识到需要偶尔对…

ci 邮件 html模板,CI Email类发邮件

发邮件代码详情private function _send_mail($data) {//附件一,名称参数编码转换if(!empty($data[resume_name])){$file_name iconv(UTF-8,GB2312,$data[file_name]);}//附件二,名称参数编码转换if(!empty($data[resume_name])){$resume_name iconv(UT…

Java安全动画

总览 自从JDK 1.2中引入安全沙箱模型以及JDK提供的安全API的发展以来,Java安全就一直是一个复杂的话题。 并发实用程序也观察到类似的问题,并且开发了一种名为Java Concurrent Animated的工具,目的是通过有趣而有趣的方式降低进入这些实用程序…

在计算机网络系统的远程通信中,在计算机网络系统的远程通信中,通常采用的传输技术是...

摘要:算机体系体系模板模板最适宜采用的合钢是组。系统信中民主命叙主义关于革命以下义革误的和社会主述错是(。程通常采传输不属民主主义济纲的三大经以下于新领的是(。...算机体系体系模板模板最适宜采用的合钢是组。网络不属特殊国无级自的是产阶以下于中有的优点…

ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南

前言Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用。在一个单页应用中,往往只有一个 html 文件,然后根据访问的 url 来匹配对应的路由脚本,动态地渲染页面内容。单页应用在…

fpga运算服务器_一张图了解CPU、GPU、ASIC、FPGA性能、功耗效率、灵活性

​CPU:中央处理器(Central Processing Unit,CPU):通用芯片,主要生产厂家如intel、AMD等,用于PC、服务器等领域。CPU作为通用芯片,可以用来做很多事情,灵活性最高&#xf…

aspen变压吸附塔_空压机科普:吸附式干燥机的结构和原理

精彩内容本文以主流的“变压吸附式”干燥机为例进行讲解。“吸附”原理一致,“脱附再生”流程有所区别。从而大致形成以下几种常见类型:●无热吸附式——使用一部分经过干燥后的压缩空气,经降压后吹扫吸附剂,实现吸附剂“再生”&a…

小学计算机管理,小学计算机室管理制度

小学计算机室管理制度 (2页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!19.90 积分芹菜小学计算机室制度1、计算机室由上电脑课老师负责管理。2、计算机室是进行电脑技术学习和操作的场所&#xff…