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

news2024/9/23 19:28:10

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.coloradmin.cn/o/1616372.html

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

相关文章

用友U8-Cloud api/hr接口存在SQL注入漏洞

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 U8 Cloud是由用友推出的新一代云ERP系统&#xff0…

VSCode的C/C++开发 ===> Windows

一、开发环境搭建 安装mingw-w64编译器(GCC for Windows 64 & 32 bits)、Cmake工具(选装) VSCode插件安装 C/C cmake cmake tools 二、代码实践演练 基于g命令 g编译单文件,生成带调试信息的可执行文件、并调试 g -g main.cpp -o my_single_swap g编译多文件…

【C#】rdlc报表答应报错:未能加载文件或程序集“Microsoft.SqlServer.Types

文章目录 一、报错信息二、解决方式 一、报错信息 Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. —> Microsoft.Reporting.DefinitionInvalidException: The definition of the report ‘’ is invalid. —&…

算法练习|Leetcode49字母异位词分词 ,Leetcode128最长连续序列,Leetcode3无重复字符的最长子串,sql总结

目录 一、Leetcode49字母异位词分词题目描述解题思路方法:哈希总结 二、Leetcode128最长连续序列题目描述解题思路方法:总结 三、Leetcode3无重复字符的最长子串题目描述解题思路方法:双指针法总结sql总结 一、Leetcode49字母异位词分词 题目描述 给你一个字符串数组&#xf…

数据结构与算法解题-20240422

这里写目录标题 一、2. 两数相加二、67. 二进制求和三、415. 字符串相加四、LCS 01. 下载插件五、71. 简化路径 一、2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 …

分享三个转换速度快、准确率高的视频转文字工具

想要直接将视频转换成文字,转换工具很重要!给大家分享三个转换速度快、准确率高的视频转文字工具,轻松完成转换。 1.网易见外 https://sight.youdao.com/ 网易家的智能转写翻译服务工作站,网页端就可以直接使用,支持视…

vi, vim,data,wc,系统常用命令-读书笔记(十)

vi 文本编辑器 基本上 vi 共分为三种模式,分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。这三种模式的作用分别是: 一般指令模式(command mode)以 vi 打开一个文件就直接进入一般指令模式了(这是默认的…

Elasticsearch:崭新的打分机制 - Learning To Rank (LTR)

警告:“学习排名 (Learning To Rank)” 功能处于技术预览版,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但此功能不受官方 GA 功能的支持 SLA 的约束。 注意:此功能是在版本 8.12.0 中引入的,并且仅适…

GEE:基于光谱距离度量方法的巴以冲突造成的地表覆盖变化检测

作者:CSDN @ _养乐多_ 本文将介绍如何在 Google Earth Engine (GEE) 平台中使用光谱距离度量方法进行地表覆盖变化检测,并以加沙地区为例,使用Sentinel2数据展示2023年3月和2024年3月的地表覆盖变化区域。 结果如下图所示, 文章目录 一、核心函数1.1 spectralDistance函数…

分布式与一致性协议之拜占庭将军问题(一)

拜占庭将军问题 概述 拜占庭将军问题其实是借拜占庭将军故事展现了分布式共识问题,探讨和论证了解决的办法。实际上,拜占庭将军问题是分布式领域最复杂的一个容错模型,一旦搞懂了它,久能掌握分布式共识问题的解决思路&#xff0…

Java HotSpot(TM) 64-Bit Server VM warning_ Sharing is only supported for boot loader classes because

今天在学习freemarker静态化页面的时候遇到了这个错误: Java HotSpot™ 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 最终我找到了解决办法 解决办法原帖:https://s…

Java中的super

package day33; ​ public class Person {public String name;public int age; ​public Person() {System.out.println("调用了父类的无参构造");} } ​ package day33; ​ public class teacher extends Person{public teacher() {System.out.println("调用了…

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置: 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期: 当函数执行完毕时,普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…

【R语言简介】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

微软刚开源就删库的WizardLM-2:MT-Bench 榜单评测超越GPT-4,7B追平Qwen1.5-32B

前言 微软最近发布的WizardLM-2大型语言模型因其先进的技术规格和短暂的开源后突然撤回,引起了科技界的广泛关注。WizardLM-2包括三个不同规模的模型,分别是8x22B、70B和7B,均展现了在多语言处理、复杂对话、推理和代理任务上的卓越能力。 H…

Ardupilot OpenIPC 基于WFB-NG构架分析和数据链路思考

Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考 1. 源由2. OpenIPC安装2.1 安装2.2 配置2.2.1 天空端配置文件2.2.2 地面端配置文件 2.3 当前配置选择 3. WFB-NG安装3.1 RTL8812AU安装3.1.1 驱动安装3.1.2 定位设备 3.2 wfb-ng安装3.2.1 传输层安装3.2.2 配置…

《架构风清扬-Java面试系列第23讲》如何理解Java的泛型檫除?

晚上好,给大家加个餐 来,思考片刻,说出你的答案 1,什么是泛型檫除? 泛型擦除是指编译器在处理泛型代码时,会在编译阶段移除(擦除)所有与泛型相关的类型参数信息,将其替换…

3Darray 修改array值然后保存图片

from PIL import Image import numpy as np img_path ./000001.jpg # 读取图片 image Image.open(img_path) width, height image.size print("图片的宽度为{},高度为{}".format(width,height)) print("图片的mode为{}".format(image.mode)) print(&quo…

CSS-vminvmax单位

vmin 和 vmax 单位 vmin 是相对于视口宽度和高度中较小值进行计算,它的值为视口宽度和高度中的较小值的百分比。 例如,如果视口宽度为 800px,高度为 1000px,那么 1vmin 等于 8px(800px 的 1%)。 vmax 是…

linux下 Mysql8.0 离线安装

环境:centos7.9 MysqlL8.0.36安装包 链接:https://pan.baidu.com/s/1bKwHr05z8Ye82dT9tntdUA 提取码:3a5z 参考Centos安装MYSQL8(离线可用) 文章目录 1、解压安装2、配置启动2.1 修改配置文件2.2 mysql 启动 3、mysql 测试 1、解压安装 #…