Hi3798 openSSH的移植

article/2025/10/25 4:30:36

 

前言

在编译海思SDK时,会自动编译openssl,zlib,故无需重复编译这两者。

编译

编译openssh

本文下载openssh-7.3p1版本,将其下载至虚拟机

tar -xvf openssh-7.3p1.tar.gz
./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/hi3798/HiSTBLinuxV100R005C00SPC050/out/hi3798mv200/hi3798mv2dmo/obj/source/component/zlib/release --with-ssl-dir=/hi3798/HiSTBLinuxV100R005C00SPC050/out/hi3798mv200/hi3798mv2dmo/obj/source/component/openssl/release --disable-etc-default-login --disable-strip CC=arm-histbv320-linux-gcc AR=arm-histbv320-linux-ar

使前缀--prefix=/usr/local/openssh,因为最后openssh使安装在开发板的这个目录下,/hi3798/HiSTBLinuxV100R005C00SPC050/out/hi3798mv200/hi3798mv2dmo/obj/source/component/zlib/release是zlib在虚拟机下的安装目录,--with-ssl-dir=/hi3798/HiSTBLinuxV100R005C00SPC050/out/hi3798mv200/hi3798mv2dmo/obj/source/component/openssl/release 是ssl在虚拟机下的安装目录。

然后在openssh源目录下执行make

make

最终会在该目录下生成一下12个文件

scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan moduli ssh_config sshd_config sftp-server ssh-keysign

到目录下/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts目下解压rootfs.tar.bz2,得到rootfs文件夹,并且在rootfs文件夹下创建一下目录

/usr/local/openssh/bin
/usr/local/openssh/etc
/usr/local/libexec
/var/run
/var/empty

将以下文件拷贝到/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/usr/local/openssh/bin目录下:

在根文件系统的bin目录下建立软连接

ln -snf /usr/local/openssh/bin/scp
ln -snf /usr/local/openssh/bin/sftp
ln -snf /usr/local/openssh/bin/ssh
ln -snf /usr/local/openssh/bin/ssh-add
ln -snf /usr/local/openssh/bin/ssh-agent
ln -snf /usr/local/openssh/bin/ssh-keygen
ln -snf /usr/local/openssh/bin/ssh-keyscan
ln -snf /usr/local/openssh/bin/sshd

将moduli ssh_config sshd_config三个文件拷贝到/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/usr/local/openssh/etc目录下

并且执行以下命令生成证书密码对:

ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N ""

至此,/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/usr/local/openssh/etc目录下有以下文件

将sshd_config中的PermitRootLogin no改为PermitRootLogin yes,将“Subsystem sftp /usr/libexec/sftp-server”改为“Subsystem    sftp    /usr/local/libexec/sftp-server”

将sftp-server  ssh-keysign拷贝至/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/usr/local/libexec

另外,在/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/etc/group中添加

sshd:x:1001:sshd

在/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/etc/gshadow中添加

sshd:!::sshd

在/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/etc/passwd中添加

sshd:x:1001:1001:sshd privsep:/var/empty:/bin/ssh

在/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/etc/shadow中添加

sshd:BsmGtKsu9a9a6:15506:5:99999:7:5:20000:

shadow文件的详细说明见http://c.biancheng.net/view/840.html

在/hi3798/HiSTBLinuxV100R005C00SPC050/source/rootfs/scripts/rootfs/autorun.sh中添加

#!/bin/sh#addgroup sshd
#adduser -G sshd -g 'sshd privsep' -h /var/empty -p 123456 -s /bin/ssh sshd
#useradd -G sshd -g 'sshd privsep' -h /var/empty -p 123456 -s /bin/ssh sshd
echo root:123456 | chpasswd rootsed -i 's|:0:5:99999:7:5:20000:|:15506:5:99999:7:5:20000:|' /etc/shadow
chown -R root.root /var/empty
chmod 744 /var/empty
/usr/local/openssh/bin/sshd
echo "sleep 5"

在rcS末尾添加

cd /
chmod +x autorun.sh
./autorun.sh

 


http://chatgpt.dhexx.cn/article/nkQEHElG.shtml

相关文章

海思HI3798M GPIO和PWM操作

一、GPIO拉高拉低操作 以GPIO2_7为例 地址(0xF8B2_2400) 基地址(0xF8B2_2000) 偏移地址(0x00000400) ①把GPIO2_7管脚复用设置为IO模式 himm 0xF8B2205C 0x00(0xF8B2205C 基地址0xF8B2_2000 …

海思Hi3798MV100机顶盒芯片介绍

Hi3798M V100是海思推出的专门针对OTT机顶盒市场的高性价比芯片方案。在码流兼容性、在线视频播放的流畅性、图像质量以及整机性能方面保持业界最好的用户体验。集成四核高性能处理器、内置NEON,其处理性能可以满足各种差异化的业务需求,支持Dolby和DTS音…

海思Hi3798MV300_Hi3798MV300H_Datasheet-系统

Hi3798MV300/Hi3798MV300H处理器子系统 Hi3798MV300/Hi3798MV300H采用 ARMCortex-A53MPCore 四核处理器,Cortex-A53 MPCore 具有以下特点:  处理器集成了 256KB L2 cache。  支持 ARMv8-A 架构。  支持 DVFS 自动调频调压和 AVS 自适应调压。 …

海思Hi3798处理器参数,Hi3798芯片详细信息介绍

Hi3798C V200集成4核64位高性能Cortex A53 处理器、内置NEON 加速引擎,强大的CPU 处理能力可以满足各种差异化的业务需求。在码流兼容性、在线视频播放的流畅性、图像质量以及整机性能方面保持业界最好的用户体验。支持4K 2KP6010bit 超高清视频解码和显示&#xff…

Linq两个List集合取交集

来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p210 GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 1、法一:常规方法 2、嗯,.NET中所有的sort,compare都支持…

两个对象List根据属性取交集和差集

背景介绍 咸鱼君最近做了个需求, excel导入功能, 其中 需要对已导入条目的做“更新” 未导入的条目做“新增” 其余的做“删除” 细品需求 无非是对excel的数据和数据库的数组做个差集, 交集的处理 打个比方: excel的数据我们定义为 newList 已导入的数据我们定义为 …

java8 Stream流 两个list取交集,获取共有数据

代码&#xff1a; public static void main(String[] args) {List<String> list1 Arrays.asList("a","b","c");List<String> list2 Arrays.asList("b","c","d");List<String> intersection …

Java-两个较大的List快速取交集、差集

工作中经常遇到需要取两个集合之间的交集、差集情况&#xff0c;但是普通的retainAll()和removeAll()无法满足数据量大的情况&#xff0c;由此就自己尝试运用其他的方法解决。注&#xff1a;如果数据量小的情况下&#xff0c;还是使用retainAll()和removeAll()方便 1.假使不存在…

java中两个list对象取交集、差集

在一般操作中&#xff0c;对于list集合取交集、差集、并集&#xff0c;比较简单&#xff0c;网上有很多例子&#xff0c;如&#xff1a; 今天我们来说一下对于两个list集合该如何取交集与并集&#xff1a; 如下两个集合&#xff1a;groupEntityList、saveEntities&#xff0c;…

两个 list 求交集

两个 list 求交集, 一种方式是手动遍历, 然后判断是否 contains, 然后添加到结果 list 中 这里介绍另外一个方法 直接调用 list1.retainAll(list2), 调用完成后, list1 中不在 list2 的元素都会被剔除, 此时 list1 就是交集 /*** retain* 保留*/Testpublic void testRetain() …

部署Kubernetes Dashboard 及监控组件 Heapster

部署Dashboard 项目地址&#xff1a;https://github.com/kubernetes/dashboard 1.下载官方提供的 Dashboard 组件部署的 yaml 文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml也可以使用Kuber…

heap类型

重点思想&#xff1a; 第一轮从k个list中拿出第一个&#xff08;若每个list非空的话&#xff1b;有可能为空&#xff09;放入minheap中&#xff0c;minheap一直储存k个lists中最小的那个数&#xff0c;对顶代表当前最小的数&#xff0c;需要插入result listnode。所有list每个n…

Python heap

原文&#xff1a;https://blog.csdn.net/dta0502/article/details/80834787 堆是一类特殊的树&#xff0c;堆的通用特点就是父节点会大于或小于所有子节点&#xff08;儿子不分左右&#xff09;。一个最小堆&#xff08;min-heap&#xff09;就是其中的每一个节点都小于或等于…

Stack and Heap

JVM 分配内存进入以下区域 1&#xff1a; Heap 2&#xff1a;Stack 3&#xff1a;Code 4&#xff1a;Static jvm有效的管理分配到这几个内存区域。 Code section 代码区 包含这个 字节码文件 (byte code) Stack section (栈区域) 包含 方法&#xff08;methods&a…

堆-heap

priority queue可以借用堆&#xff08;heap&#xff09;,binary heap是一种complete binary tree(完全二叉树&#xff09; 完全二叉树&#xff1a;binary tree除最底层叶节点之外&#xff0c;是填满&#xff0c;最底层叶节点由左到右不得有空隙。 用vector来存储所有节点&…

Kubernetes安装系列之heapster安装

虽然heapster已经即将退休&#xff0c;为了纪念一下&#xff0c;这篇文章整理一下heapstergrafanaInfluxdb组合对于kubernetes的node与资源进行监控的插件安装与设定方法&#xff0c;本文以脚本的方式进行固化&#xff0c;内容仍然放在github的easypack上。 整体操作 https:/…

Heapster -- Kubernetes Dashboard集成Heapster

原始kubernetes dashboard的界面中仅显示了pod一些配置信息&#xff0c;无法图形化展现集群度量指标信息。原始图如下&#xff08;此处从网上找了一个图..&#xff09;&#xff1a; 而如果要展示图形化的集群度量指标信息&#xff0c;就需要安装一个dashboard插件&#xff1a;h…

HeapSort

堆的定义&#xff1a; n个关键字序列K[1....n]称为堆&#xff0c;当且仅当改序列满足&#xff1a; 第一种为&#xff1a;小根堆&#xff1a;每个结点的值都小于或等于左右孩子结点 第二种为&#xff1a;大根堆&#xff1a;每个结点的值都大于或等于左右孩子结点 堆是一种完全二…

heap.h

上一篇写了写链表&#xff0c;这篇写下堆&#xff0c;这个结构接触的不多&#xff0c;所以正好学习一下libhv中的堆&#xff0c;这个堆的实现比较灵活&#xff0c;即可以是大顶堆也可以是小顶堆&#xff0c;通过比较函数是比大还是比小来区别&#xff0c;当然&#xff0c;如果没…

部署 heapster 插件

说明&#xff1a;本部署文章参照了 https://github.com/opsnull/follow-me-install-kubernetes-cluster &#xff0c;欢迎给作者star Heapster是一个收集者&#xff0c;将每个Node上的cAdvisor的数据进行汇总&#xff0c;然后导到第三方工具(如InfluxDB)。 Heapster 是通过调用…