arm移植ssh,实现远程root登录和sftp登录

2020-06-29来源: eefocus关键字:arm  移植ssh  远程root登录  sftp登录

主机:ubuntu16.04 64bit

目标板:mini2440

交叉编译工具:4.4.3


1. 下载需要的源码:


mkdir -p ~/arm/fs ;mkdir -p ~/arm/source

下载zlib-1.2.3:   wget -c http://www.zlib.net/fossils/zlib-1.2.3.tar.gz

下载openssl-0.9.8d:    wget -c http://www.openssl.org/source/openssl-0.9.8d.tar.gz

下载openssh-4.6.tar.gz  


上面三个源码打包下载链接:https://download.csdn.net/download/u012577474/11846054


在主机上建立工程目录:

./arm

|-build – 安装目标目录

|-source – 源程序解压目录(将所有源码解压至此目录)

|-tar – 源程序压缩文件目录


(1) 编译zlib:


 tar zxvf zlib-1.2.3.tar.gz -C .

 cd zlib-1.2.3/

 ./configure --prefix=/root/arm/fs/zlib-1.2.3


修改Makefile:


   CC=gcc 改为: 

   CROSS=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-

   CC=$(CROSS)gcc 

   LDSHARED=gcc 改为: LDSHARED= $(CROSS)gcc

   CPP=gcc -E   改为:  CPP=$(CROSS)gcc -E

   AR=ar rc     改为: AR= $(CROSS)ar rc


  开始编译: 

  make

  make install


(2) 编译openssl:


tar zxvf openssl-0.9.8d.tar.gz

cd openssl-0.9.8d/

./configure --prefix=/root/arm/fs/openssl-0.9.8d os/compiler:/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc 


  开始编译: 

    make

    make install


编译和安装 openssl 时出错,POD document had syntax errors:


installing man1/smime.1

  smime.pod around line 272: Expected text after =item, not a number

  smime.pod around line 276: Expected text after =item, not a number

  smime.pod around line 280: Expected text after =item, not a number

  smime.pod around line 285: Expected text after =item, not a number

  smime.pod around line 289: Expected text after =item, not a number

  POD document had syntax errors at /usr/bin/pod2man line 71.

  make: *** [install_docs] 错误 255

  原因分析:这是由于 OpenSSL 1.0.1e 与 perl5.18 不兼容。

  解决方法:

  1、有人验证 安装 perl 5.16 可以兼容,安排低版本 perl 5.16 可以解决问题。

  2、删除 pod2man 文件:

  sudo rm /usr/bin/pod2man


出现报错,configure: error: *** Can’t find recent OpenSSL libcrypto (see config.log for details):

这是缺少openssl-dev依赖的原因

解决方法:


安装openssl

apt-get install libssl-dev


(3) 编译openssh:


      tar zxvf openssh-4.6p1.tar.gz

      cd openssh-4.6/

./configure --host=arm-linux --with-libs --with-zlib=/root/arm/fs/zlib-1.2.3 --with-ssl-dir=/root/arm/fs/openssl-0.9.8d --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar

      make

      ##不要make install


configure配置openssh的时候出错:configure: error: *** zlib missing - please install first or check config.log ***

解决方法:

1、注意zlib的install路径 和 OpenSSL的install路径 是否正确

2、重新交叉编译zlib


(4)目标板准备

确保目标板上有以下目录,若没有,则新建:


$ mkdir -p /usr/local/bin

$ mkdir -p /usr/local/etc

$ mkdir -p /usr/local/libexec

$ mkdir -p /var/run

$ mkdir -p /var/empty/sshd

修改/var/empty目录权限

$ chmod 755 /var/empty    


(5)拷贝编译后的sshd相关程序文件到目标板

(1) 将 openssh-4.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下

(2) 再scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 这7个文件到目标板/usr/local/bin目录下

(3) 将sftp-server ssh-keysign 拷贝到/usr/local/libexec目录下

(4) 然后将sshd_config,ssh_config 拷贝到/usr/local/etc目录下


(6)生成Key文件


在主机上生成key文件(生成较慢耐心等待):


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

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


会产生4个文件,要拷贝到目标板的/usr/local/etc目录下。


在目标板上生成key文件(生成较慢耐心等待):


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

在这里插入图片描述

会产生2个文件,移动到/usr/local/etc目录下。


$ mv  ./ssh_host*  /usr/local/etc


(7)修改key文件权限

要把前面生成的6个秘钥文件的权限都修改成700,因为必须所有者是root。


否则运行sshd会出现下面错误信息:

在这里插入图片描述

(8) 添加用户:

将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将passwd中的 /bin/bash 该为 /bin/sh

也可以删除掉不需要的一些用户。


首次使用目标开发板root用户没有设置密码,需执行passwd root指令设置密码。


如果不存在sshd用户,则:


在目标板的passwd中添加sshd用户: 

sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin 

在shadow中也添加对应的项就行了: 

sshd:!:14069:0:99999:7:::


(9)启动sshd

启动sshd,需要使用绝对地址:


$ /usr/sbin/sshd

在这里插入图片描述

来看看sshd是否已启动:


$ netstat -ntlp

在这里插入图片描述

可以看到服务已经被启动了。


(10)从远程主机登录目标板

1、查看目标板IP:

在这里插入图片描述

可以知道目标板当前IP是172.20.11.41


2、主机通过ssh远程登录目标板


$ ssh -v root@172.20.11.41

在这里插入图片描述

如下图,可以看到登录成功了:

在主机上ls查看目标板根目录。

在这里插入图片描述

在目标板上,ls查看根目录,可以看到和上面完全一致。

在这里插入图片描述

到此openssh4.6移植完成。


(11)通过SFTP客户端登录目标板

客户端软件:filezilla

平台:win7


打开站点管理器添加目标板账号(root的账号密码):

在这里插入图片描述

点击连接。连接成功,可以看到目标板下面的文件如下:

在这里插入图片描述

关键字:arm  移植ssh  远程root登录  sftp登录 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501490.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:以模块的方式加载DM9000驱动 (for mini2440)
下一篇:mini2440按键驱动程序分析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MDK-ARM(Keil uVision V4.72)上STM32开发环境配置
以前我都是在Eclipse上面和arm-none-eabi交叉编译环境来开发STM32应用程序的。现在改用MDK-ARM比较专业的工具搭建一个开发环境。新建一个指定STM32微控制器型号的工程:为了生成编译文件,勾选如下复选框:配置编译项:STM32F4XX, USE_STDPERIPH_DRIVER添加库编译符号,和语言/代码生成级别其中最关键的头文件包含目录:首先要添加包含工程目录,因为固件库会查找 stm32f4xx_conf.h 配置头文件,中断服务例程实现文件可能也会调用main.h中的函数。再添加包含 xxxySTM32F4_LibLibrariesCMSISInclude 目录,CMSIS Core Support
发表于 2020-06-07
MDK-ARM(Keil uVision V4.72)上STM32开发环境配置
PIC32单片机harmony开发环境 - uart例程和代码分析
开发环境:mplab 3.45 harmony 1.09 xc32 1.42源代码下载:http://download.csdn.net/detail/zn2857/9712707源代码分析:void APP_Tasks ( void ){     /* Check the application's current state. */    switch ( appData.state )    {        /* Application's initial state. */   
发表于 2020-06-06
ADS1.2使用jlink调试程序(调试芯片s3c2440arm9)
一、软件安装ADS1.2下载:http://down.drv5.cn/www.drv5.cn/arm ads1.2.rarjlink驱动下载:http://fastsoft.onlinedown.net/down/JLink_Windows_V630d.exeS3C2440led裸机程序(GT2440开发板的):https://download.csdn.net/download/u012577474/11249524下载,安装上面的3个软件。二、CodeWarrior编辑arm程序ADS安装后,会安装以下这些工具。这里先打开CodeWarrior,导入我们的led裸机程序。程序目录:导入程序:二、AXD使用J-link调试程序
发表于 2020-06-06
ADS1.2使用jlink调试程序(调试芯片s3c2440arm9)
SmartARM3250用户文件系统烧写办法
烧写内核和安全文件系统后,在U-Boot下,输入run safemode可进入安全系统,在安全系统下,烧写用户文件系统。 烧写用户文件系统实际上就是将文件系统压缩包rootfs.tar或者rootfs.tar.bz2释放到NAND FLASH分区。 大致流程如下:(1)将NAND FLASH用户文件系统分区MTD4 mount到系统某个目录下,如/mnt目录:(2)将存放rootfs.tar或者rootfs.tar.bz2文件系统档案包的介质(如U盘、SD卡、CF卡或者NFS服务器)挂在到系统另外一个目录,如/tmp目录。(3)将/tmp目录下的rootfs档案包释放到MTD挂在目录/mnt,等待释放
发表于 2020-06-06
SmartARM3250用串口烧写U-Boot无法启动解决办法
(3)选择tera term的file-》send file,在文件传输界面选中binary: 传输完毕后,发送终止信号ALT+B (4)输入nsave和aboot flash raw 0x83f80000,完成保存和启动参数设置。 附:启动效果kickstart init ok!copy s1l to memery!jump to s1l! SmartARM LPC3250 boardBuild date: Dec 24 2008 08:38:21Autoboot in progress, press any key to stop  U-Boot 2010.06
发表于 2020-06-06
SmartARM3250用串口烧写U-Boot无法启动解决办法
单片机p0口的工作原理解析
学习ARM嵌入式的时候,发现自己对以前学过的数模器件的知识遗忘了不少,按照我的进度本来应该继续学习ARM微处理器控制的课程,但想着后来势必还会遇到相同的问题所以就准备中断一下,杀回来把汇编和一些电路知识再总结一下,查漏补缺。如果有写的不合理的地方,还请多多指教。言归正传,先来一幅图片来引入今天要讲述的三个知识点:锁存器(由一个D触发器构成)D:数据输入端;CP/CLK:时序信号输入端;Q:输出端;~Q:反向输出端;工作原理:当D端输入数据信号,CP/CLK端没有时序信号时,Q和~Q端将不会有信号输出;当D端输入数据信号,CP/CLK端有时序信号时,Q和~Q端有信号输出;当D端和CP/CLK端同时有信号输入后突然撤掉CP/CLK信号
发表于 2020-06-06
单片机p0口的工作原理解析
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved