背景:

自己拥有一块开发板,但是苦于上面没有ssh,比较不方便。正好趁这个机会,移植ssh。我们使用的ssh是openssh。

host平台   :Ubuntu 18.04
arm平台   : S5P6818
openssh     :4.6p1
openssl    :0.9.8e
zlib      :1.2.11

arm-gcc   :4.8.1

主机准备:

为了方便管理,创建有关的目录

mkdir ssh
cd ssh
mkdir  compressed  install  source

下载并解压有关的源码:

cd compressedwget -c https://www.zlib.net/zlib-1.2.11.tar.gz
wget -c https://www.openssl.org/source/openssl-0.9.8e.tar.gz
wget -c http://mirrors.mit.edu/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz

#解压下载的包
tar -xf openssh-4.6p1.tar.gz -C ../source
tar -xf openssl-0.9.8e.tar.gz -C ../source tar -xf zlib-1.2.11.tar.gz -C ../source

编译:

编译 zlib

cd ../source/zlib-1.2.11
# 红色部分配置路径为 ssh/install 的绝对路径
./configure --prefix=/home/xx/arm/ssh/install/zlib-1.2.11
# 修改编译器对应的变量值 ,注意是加入前缀,不要删除其他部分。(编译器使用能够在板子上运行编译的即可)vi MakefileCC=arm-none-linux-gnueabi-gccAR=arm-none-linux-gnueabi-ar rcCPP =arm-none-linux-gnueabi-gcc ...LDSHARED=arm-none-linux-gnueabi-gcc ...make && make install

编译openssl

cd ../openssl-0.9.8e/
# 红色部分同上,根据自己的需求进行修改
./Configure --prefix=/home/xx/arm/ssh/install/openssl-0.9.8e  os/compiler:arm-none-linux-gnueabi-gcc
make && make install

一般到了这里会出现下列问题,处理后重新 make && make install 即可:

(笔者建议使用 红色加粗的命令

编译和安装openssl时出错,POD document had syntax errors
错误信息:installing man1/smime.1smime.pod around line 272: Expected text after =item, not a numbersmime.pod around line 276: Expected text after =item, not a numbersmime.pod around line 280: Expected text after =item, not a numbersmime.pod around line 285: Expected text after =item, not a numbersmime.pod around line 289: Expected text after =item, not a numberPOD 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或sudo mv /usr/bin/pod2man /usr/bin/pod2man_bak

编译openssh

红色部分依旧根据实际情况进行修改

cd ../openssh-4.6p1/./configure --host=arm-none-linux-gnueabi  \ --with-libs --with-zlib=/home/xx/arm/ssh/install/zlib-1.2.11   \ --with-ssl-dir=/home/xx/arm/ssh/install/openssl-0.9.8e  \ --disable-etc-default-login  \ CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-armake      #注意:openssh不需要make install

如果出现以下某个报错,请注意zlib的install路径 和 OpenSSL的install路径 是否正确
  configure配置openssh的时候出错:configure: error: *** zlib missing - please install first or check config.log ***
  configure: error: *** Can't find recent OpenSSL libcrypto (see config.log for details)

开发板准备:

新建以下目录

mkdir -p /usr/local/bin/
mkdir -p /usr/local/sbin/
mkdir -p /usr/local/etc/
mkdir -p /usr/local/libexec/
mkdir -p /var/run/
mkdir -p /var/empty/

拷贝:
从PC机上将以下文件拷贝到目标板Linux系统中

PC机 ssh/source/openssh-4.6p1/ 目录下的

  • scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan  拷贝到目标板/usr/local/bin
  • moduli ssh_config sshd_config拷贝到目标板 /usr/local/etc
  • sftp-server  ssh-keysign 拷贝到目标板 /usr/local/libexec
  • sshd 拷贝到目标板 /usr/local/sbin/

生成Key文件
在PC机 ssh/source/openssh-4.6p1/ 目录下运行:

ssh-keygen -t rsa -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-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""

将生成的 ssh_host_*_key这4个文件copy到目标板的 /usr/local/etc/目录下

修改目标板passwd文件

在/etc/passwd 中添加下面这一行 “ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ”

cp /etc/passwd  /etc/passwd_bak
echo "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin" >> /etc/passwd

此后,只需要运行一次 /usr/local/sbin/sshd 此后即可使用远程登录

如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否则其他设备无法连接:

passwd root

如果连接不上,请直接运行 /usr/local/sbin/sshd 查看是什么原因

  • 有提示 动态链接库 找不到的(工具链的动态链接库)
  • 有提示 ssh_host 文件找不到的 生成即可

开发板设置开机自启动ssh:

/etc/init.d目录下新建sshd.sh文件
#! /bin/sh
sshd=/usr/local/sbin/sshd
test -x "$sshd" || exit 0
case "$1" instart)echo -n "Starting sshd daemon"start-stop-daemon --start --quiet --exec $sshd  -becho ".";;stop)echo -n "Stopping sshd"start-stop-daemon --stop --quiet --exec $sshdecho ".";;restart)echo -n "Stopping sshd"start-stop-daemon --stop --quiet --exec $sshdecho "."echo -n "Waiting for sshd to die off"for i in 1 2 3 ;dosleep 1echo -n "."doneecho ""echo -n "Starting sshd daemon"start-stop-daemon --start --quiet --exec $sshd -becho ".";;*)echo "Usage: /etc/init.d/sshd {start|stop|restart}"exit 1
esac
exit 0

在 /etc/init.d/rcS 添加一行 "/etc/init.d/sshd.sh start"

cp /etc/init.d/rcS  /rcS_bakecho "/etc/init.d/sshd.sh start" >> /etc/init.d/rcScat /etc/init.d/rcS


ref :
https://blog.csdn.net/acanoe/article/details/7853017
https://www.veryarm.com/892.html
https://blog.csdn.net/evenness/article/details/16881975
https://blog.csdn.net/v6543210/article/details/83420034

转载于:https://www.cnblogs.com/schips/p/11173968.html

Arm-Linux 移植 ssh相关推荐

  1. arm linux 移植全部过程

    arm linux 移植全部过程 总述 面向的读者 正文 现代计算机系统的工作模式 BOOT-ROM U-Boot Makfile 总述 之前做过linux在powerpc上的移植,当然过程曲折,内容 ...

  2. 嵌入式linux移植ssh,将SSH移植到arm soc上

    由于用的SOC没有内置ssh,产品投放市场之后可能会有安全隐患,因此决定自己移植ssh,参考了网上的博文,将过程记录如下 参考的博文:http://blog.csdn.net/ctbinzi/arti ...

  3. arm linux移植jvm,JVM的ARM移植.PDF

    JVM的ARM移植 JVM 的 ARM 移植 当今JVM 种类很多,如IBM JVM .MS JVM 等等.但要把它用到 ARM 上,并非易事. 经过测试和对比,最终还是选择了 SUN 的JVM,其中 ...

  4. php 移植 arm 精简,arm linux 移植 PHP

    背景: PHP 是世界上最好的语言,所以要考虑php的移植. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 主机准备: 使用以下脚本 ## # C ...

  5. arm linux 移植过程——uboot makefile注释

    uboot makefile注释 为什么要注释uboot的Makefile呢?这是一个玄学问题,首先,我本人对make的工作机制比较清楚,但是从来没自己写过Makefile,而且很多语法在配置编译条件 ...

  6. ffmpeg arm linux编译,arm linux 移植 ffmpeg 库 + x264 + x265

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  7. ARM LINUX 移植c++进程间通信框架RCF2.2

    ARM移植RCF2.2 一.首先移植boost依赖库 1.首先去选择下载自己需要的boost版本: 2.下载好后,解压缩. 3.先运行./bootstrap.sh 这个脚本 4.会生成一个projec ...

  8. A40i linux移植ssh报错

    ssh: symbol lookup error: ssh: undefined symbol: EVP_aes_128_ctr 网上查了很多这种情况的都没有解决,最后慢慢排查是openssl的库的问 ...

  9. ARM+LINUX移植攻略(十九)Linux驱动移植之看门狗

    努力成为linux kernel hacker的人李万鹏原创作品,为梦而战.转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2011/06/06/6 ...

  10. ARM的嵌入式Linux移植体验之操作系统

    转自:[url]http://dev.yesky.com/153/2527653.shtml[/url] 06-08-13 08:00 作者: 宋宝华 出处: 天极开发 责任编辑:方舟 在笔者撰写的& ...

最新文章

  1. CVE-2013-2551漏洞成因与利用分析(ISCC2014 PWN6)
  2. 【Android 逆向】Frida 框架 ( Frida 框架使用环境 | Frida 框架作用 | Frida 框架模块 )
  3. Android之内存泄露、内存溢出、内存抖动分析
  4. sql 2008服务器响应慢,SQL Server 2008停止响应后,Web服务器不活动
  5. react 遍历对象_探索:跟随《Build your own React》实现一个简易React
  6. react --- render持续调用解决方案
  7. 自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件
  8. 电商项目的并发量一般是多少_掌握这些,高并发秒杀系统就不用担心了!
  9. SAIF MBA2011年学费与资助政策发布公告
  10. 今天最好的生日礼物就是重新找到目标
  11. 威马汽车创始人沈晖:10万以下的不能叫智能电动汽车
  12. 使用Python进行任务调度(进阶篇)
  13. 点击弹窗播放视频代码 !
  14. SQLserver中勒索病毒或严重损坏后的恢复数据方法
  15. Linux修改IP地址
  16. “函数...已有主体”问题解决
  17. tp6 的unique验证
  18. H5移动端实现手机震动效果
  19. 最好的开源App锦集
  20. 关于PS中RGB和CMYK的区别

热门文章

  1. SaltStack Syndic配置
  2. ETDM:基于显式时间差分建模的视频超分辨率(CVPR 2022)
  3. 除了 Tensorflow、PyTorch ,还有哪些深度学习框架值得期待?
  4. MIT黑科技:无需视觉输入,立体声音频+摄像机元数据即可实现移动车辆定位
  5. 计算机东大计算机三在线作业,东大16秋学期《计算机基础》在线作业3
  6. 译文 | 与TensorFlow的第一次接触 第六章:并发
  7. 深度学习(三十二)半监督阶梯网络学习笔记
  8. 使用QP方法解基于五次多项式形式的cost function minimization问题
  9. 庞特里亚金最小值原理求解能耗最小化的时间最优OBVP问题
  10. mysql某个表的列除以2_数据库mysql(二)