当前位置: 首页 > news >正文

将SSH移植到arm soc上

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

参考的博文:http://blog.csdn.net/ctbinzi/article/details/5929800

  1. 要下载的源码包

    1. openssl-1.0.2g.tar.gz    http://www.openssl.org/source/

    2. openssh-7.2p2.tar.gz    http://www.openssh.com/portable.html#ftp

    3. zlib-1.2.8.tar.gz    http://www.zlib.net/

2. 交叉编译

我在编译服务器上我的工作目录(/home/jack/work)下新建目录ssh,进入ssh,新建目录compressed、install、source。

将下载好的源码包拷贝至compressed目录下

a. 编译zlib

cd /home/jack/work/ssh/compressed
tar -zxvf zlib-1.2.8.tar.gz -C ../source/
cd ../source/zlib-1.2.8
./configure --prefix=/home/jack/work/ssh/install/zlib-1.2.8
vim Makefile
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar
CPP =arm-none-linux-gnueabi-gcc -E
LDSHARED=arm-none-linux-gnueabi-gcc

make

make install

b. 编译openssl

cd /home/jack/work/ssh/compressed
tar -zxvf openssl-1.0.2g.tar.gz -C ../source/
cd ../source/openssl-1.0.2g
./Configure --prefix=/home/jack/work/ssh/install/openssl-1.0.2g  os/compiler:arm-none-linux-gnueabi-gcc
make
make install

c. 编译openssh

cd /home/jack/work/ssh/compressed
tar -zxvf openssh-7.2p2.tar.gz -C ../source/
cd ../source/openssh-7.2p2
./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/home/jack/work/ssh/install/zlib-1.2.3 --with-ssl-dir=/home/jack/work/ssh/install/openssl-1.0.2g --disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
make

     3. 目标板文件系统设置

        a. 在目标板上创建以下目录:

            /usr/local/bin/

            /usr/local/sbin/

            /usr/local/etc/

            /usr/local/libexec/

            /var/run/

            /var/empty/

        b. 将编译服务器上的文件拷贝到目标板对应文件夹下:

            进入/home/jack/work/ssh/source/openssh-7.2p2下,将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/目录下。记得修改可执行权限。

            进入/home/jack/work/ssh/source/zlib-1.2.8下,将libz.so.1.2.8拷贝至目标板的/lib/目录下,并创建软连接

ln -s libz.so.1.2.8 libz.so.1

        c. 生成key文件

cd /usr/local/etc/
../bin/ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
../bin/ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
../bin/ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
../bin/ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N ""

        d. 添加用户

            如果编译服务器上有ssh服务,那么将主机上 /etc/目下的 passwd, shadow, group 三个文件拷贝到目标板的 /etc目录下, 同时记得将passwd的最后 /bin/bash 该为 /bin/sh 。

            如果没有,那么就手动建立。

            在目标板的passwd中添加sshd用户:
            sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
            在shadow中也添加对应的项:
            sshd:!:14069:0:99999:7:::

    4. 测试

/usr/local/sbin/sshd

    在终端下执行

ssh root@202.0.0.145

    输入root密码即可登录了。

转载于:https://my.oschina.net/JackiOS/blog/646882

相关文章:

  • SpringMVC 的工作原理/执行流程?
  • 进程详解(1)——可能是最深入浅出的进程学习笔记
  • SpringMVC 的核心组件有哪些?
  • Iaas-cloudstack概念
  • SpringMVC 常用的注解有哪些?
  • Thrift开发示例
  • @RequestMapping 的作用是什么?
  • 小奇的糖果(candy)
  • 如何解决 POST 请求中文乱码问题,GET 的又如何处理呢?
  • 修饰符与关键字
  • bootstrap 入门
  • SpringMVC 和 Struts2 的区别有哪些?
  • 递归经典问题详解
  • 讲下Spring框架
  • 视图间坐标转换
  • 08.Android之View事件问题
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • angular学习第一篇-----环境搭建
  • codis proxy处理流程
  • emacs初体验
  • HTTP那些事
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JAVA多线程机制解析-volatilesynchronized
  • JS 面试题总结
  • Laravel 中的一个后期静态绑定
  • mockjs让前端开发独立于后端
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React-Native - 收藏集 - 掘金
  • spring boot下thymeleaf全局静态变量配置
  • vuex 笔记整理
  • 测试如何在敏捷团队中工作?
  • 订阅Forge Viewer所有的事件
  • 强力优化Rancher k8s中国区的使用体验
  • 入门到放弃node系列之Hello Word篇
  • 手机端车牌号码键盘的vue组件
  • 探索 JS 中的模块化
  • puppet连载22:define用法
  • UI设计初学者应该如何入门?
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六)软件测试分工
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (太强大了) - Linux 性能监控、测试、优化工具
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 读取 JSON格式的数据
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 中创建支持集合初始化器的类型
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET与 java通用的3DES加密解密方法