嵌入式linux学习之arm开发板移植ssh

1.下载源码

(1)zlib 下载网址:http://www.zlib.net/fossils/ 教程中版本选择的是: zlib-1.2.11.tar.gz
(2)openssl下载网址:https://www.openssl.org/source/mirror.html 教程中版本选择的是: openssl-1.1.1-stable-SNAP-20210701.tar.gz
(3)openssh(前两者可以看做ssh的依赖)下载网址:https://fastly.cdn.openbsd.org/ 教程中版本选择的是: openssh-8.6p1.tar.gz

2.编译源码

0) 将上述压缩包均拷贝到Linux虚拟机下
(目录随意,例如我放在/home/tao/linux/tool/openssh/),解压 :tar -zxvf xxx.tar.gz 分别解压三个压缩包
1) 编译zlib源码

cd /home/tao/tools/openssh/zlib*
mkdir install_dir #创建安装目录
./configure --prefix=/home/tao/tools/openssh/zlib*/install #执行之后会生成Makefile
vim Makefile #修改Makfile 将其中gcc、g++都修改为交叉编译器的名称。

## 原来代码
#####  19: CC=gcc
##### 30: LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
#####  31: CPP=gcc -E
##### 修改如下
#####  19: CC=arm-linux-gnueabihf-gcc#根据自己的交叉编译器更改
##### 30: LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
##### 31: CPP=arm-linux-gcc -E

make
make install

2) 编译openssl源码

cd /home/tao/tools/openssh/openssl*
mkdir install_dir
./Configure linux-generic32 no-asm shared no-async --prefix=/home/tao/tools/openssh/openssl-3.1.5/install
arm-linux-gnueabihf-cpp
vim Makefile

# CROSS_COMPILE=arm-linux-gnueabihf-     #交叉编译器的前缀,修改成这样

make
make install
完成后install_dir文件夹内容:
在这里插入图片描述

3) 编译openssh源码

cd /home/tao/tools/openssh/openssh*
./configure --host=arm-linux --with-libs --with-zlib=/home/tao/tools/zlib --with-ssl-dir=/home/tao/linux/openssh/openssl-3.1.5/install --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar
–without-openssl-header-check# 注意修改路径
make
#千万不要 make install 不然会包含一些配置信息

打包

创建文件夹/srm-ssh,里面创建文件夹sbin,bin,etc,libexec

# 分类生成的文件,复制
cp sshd ../arm-ssh/sbin
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ../arm-ssh/bin
cp sshd_config ssh_config ../arm-ssh/etc
cp sftp-server  ssh-keysign ../arm-ssh/libexec
# 生成一些秘钥,前提是主机上已经有ssh服务
cd ../arm-ssh/etc
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N "" #此处ssh-keygen 并非此次编译生成的
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
#我在stm32mp1上运行sshd时报错找不到libcrypto.so.3和libcrypt.so.1,现在复制到文件夹中:
cp /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libcrypt.so.1 ../
cp ../../openssl/lib/libcrypto.so.3 ../
tar -zcvf arm-ssh.tar.gz arm-ssh/      #先打包
#拷贝到开发板(方式自选)或者使用scp
移植
cd arm-ssh
cp sbin/*  /usr/sbin
cp bin/*   /usr/local/bin 
cp etc/*   /usr/local/etc 
cp libexec/* /usr/local/libexec
cp lib* /usr/lib#那两个库必须
# 创建软连接
cd /bin
ln -s /usr/local/bin/scp 
ln -s /usr/local/bin/sftp 
ln -s /usr/local/bin/ssh 
ln -s /usr/local/bin/ssh-add 
ln -s /usr/local/bin/ssh-agent 
ln -s /usr/local/bin/ssh-keygen 
ln -s /usr/local/bin/ssh-keyscan
# 修改配置文件
vim /usr/local/sshd_config  # 将PermitRootLogin yes前的注释“#”号去掉 就可以以root登录
#如果没有此文件则创建文件添加此行
#如果开发板用户没有密码可以修改密码 passwd root
vi /etc/passwd添加如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4729321146ea4c38888710ac616d36b3.png)
chmod 600 /usr/local/bin/*#不能777否则报错权限太open
使用sshd可能报错需要使用绝对地址

/usr/sbin/sshd成功运行,使用finalshell等工具可登陆

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

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

相关文章

仿真数据和实测数据的时频变换

目录 1.仿真数据2.实测数据3.地震信号数据4.语音数据 1.仿真数据 2.实测数据 3.地震信号数据 4.语音数据

嵌入式Linux开发实操(十九):Nand Flash驱动的实现

前言: nand flash从硬件连接上看,如下图,有专用接口,数据线有8或16根。 Nand Flash按每个存储单元Cell内存储比特个数不同可分为 SLC(Single-Level Cell存储1个比特)、MLC(Multi-Level Cell存储2个比特) 、 TLC(Triple-Level Cell存储3个比特)、QLC(Quad-Level C…

vue3【详解】选项式 API 实现逻辑复用

抽离逻辑代码到一个函数函数命名约定为 useXxxx格式 ( React Hooks 也是 )在 setup 中引用 useXxx 函数 演示代码:实时获取鼠标的坐标 逻辑封装 useMousePosition.js // 导入 ref, onMounted, onUnmounted import { ref, onMounted, onUnmounted } from "vue…

HarmonyOS开发案例:【视频播放器】

介绍 基于video、swiper和slider组件,实现简单的视频播放器,可支持海报轮播、视频播放等功能。 相关概念 [video组件]:视频播放组件。[swiper组件]:滑动容器,提供切换子组件显示的能力。[slider组件]:滑…

代码随想录算法训练营第五十九天 | 503. 下一个更大元素 II、42. 接雨水

代码随想录算法训练营第五十九天 | 503. 下一个更大元素 II、42. 接雨水 503. 下一个更大元素 II题目解法 42. 接雨水题目解法 感悟 503. 下一个更大元素 II 题目 解法 题解链接 使用两个size class Solution { public:vector<int> nextGreaterElements(vector<in…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(五)

静电放电过程是一个很复杂的过程&#xff0c;下面比对人体持金属对产品放电和静电发生器对产品进行接触放电过程的详细分解说明。 1. 人持金属对产品放电过程 人对产品所产生的静电放电&#xff0c;会发生下面一系列的事件&#xff1a; 1&#xff09;当手持金属片接近产品的…

面试十八、容器适配器

容器适配器是一种特殊类型的容器&#xff0c;它们提供了一种不同于常规容器的接口和行为。容器适配器通常是建立在其他容器之上&#xff0c;通过改变接口或添加限制来满足特定的需求或解决特定的问题。 在 C 中&#xff0c;标准库提供了三种常见的容器适配器&#xff1a; 栈&am…

fastgpt、dify功能分析比较

目录 前言 一、dify、fastgpt是什么&#xff1f; 二、同场pk 1.大模型接入 2.chat&#xff08;最简应用&#xff09; 3.发布应用 4.知识库 5.workflow 6.其他 三、一些point记录 总结 前言 现在都开始AI应用开发&#xff0c;何谓AI应用&#xff0c;起码要和AI大模型…

Robbins-Monro(RM)算法【随机近似】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

一招下载transformers真不用网上那些教程(我试了1*mol多次才知道)

pip很多是2 然而&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;…

stable diffusion Temporal-kit和EbSynth视频转动画学习笔记

1、打开stable diffsuion webui 点击Temporal-kit 页签&#xff0c;再点击预处理pre-processing,上传视频 在工作目录下得到拆分的关键帧,在input目录里 打开图生图&#xff0c;输入正反描述词&#xff0c;其他配置如下 批量生成图片&#xff0c;找到最满意的那一张&#xff0…

Java转go,我用了12小时,10小时在解决环境问题

Part1 问题背景 作为一个资深的Java开发者&#xff0c;我深知面向对象的高级语言&#xff0c;语法是不用学的。需要的时候搜索就可以了&#xff0c;甚至可以用ChatGPT来写。 之前我做一个安全多因素校验服务。因为是临时服务&#xff0c;扩展性上基本没有要求&#xff0c;为了快…