Arm-Linux 移植 ssh
背景:
自己拥有一块开发板,但是苦于上面没有ssh,比较不方便。正好趁这个机会,移植ssh。我们使用的ssh是openssh。
## # Copyright By Schips, All Rights Reserved # https://gitee.com/schips/ # File Name: make.sh # Created : Sat Nov :: PM CST ## #!/bin/sh BUILD_HOST=arm-hisiv500-linux ARM_GCC=${BUILD_HOST}-gcc BASE=`pwd` OUTPUT_PATH=${BASE}/install ZLIB=zlib- OPENSSL=openssl-1.0.2t OPENSSH=openssh-.6p1 FIN_INSTALL=/usr/${OPENSSH} make_dirs () { #为了方便管理,创建有关的目录 cd ${BASE} && mkdir compressed install source -p } download_package () { cd ${BASE}/compressed #下载包 wget -c https://www.zlib.net/${ZLIB}.tar.gz wget https://www.openssl.org/source/${OPENSSL}.tar.gz wget -c http://mirrors.mit.edu/pub/OpenBSD/OpenSSH/portable/${OPENSSH}.tar.gz } tar_package () { cd ${BASE}/compressed ls * > /tmp/list.txt for TAR in `cat /tmp/list.txt` do tar -xf $TAR -C ../source done rm -rf /tmp/list.txt } make_zlib () { # 编译安装 zlib cd ${BASE}/source/${ZLIB} echo "ZLIB ABOUT" CC=${ARM_GCC} ./configure --prefix=${OUTPUT_PATH}/${ZLIB} make && make install } pre_make_ssl () { cd ${BASE}/source/${OPENSSL} startLine=`sed -n '/install_html_docs\:/=' Makefile` echo $startLine # 为了避免 多行结果 for startline in $startLine do lineAfter= endLine=`` sed -i $startline','$endLine'd' Makefile echo "install_html_docs:" >> Makefile echo "\t@echo skip by Schips" >> Makefile echo "install_docs:" >> Makefile echo "\t@echo skip by Schips" >> Makefile echo "# DO NOT DELETE THIS LINE -- make depend depends on it." >> Makefile break done } make_ssl () { # 编译安装 zlib cd ${BASE}/source/${OPENSSL} echo "SSL ABOUT" ./Configure --prefix=${OUTPUT_PATH}/${OPENSSL} os/compiler:${ARM_GCC} #sudo mv /usr/bin/pod2man /usr/bin/pod2man_bak #mv doc/apps /tmp/ pre_make_ssl make && make install } do_copy () { cd ${BASE}/source/${OPENSSH} mkdir ${OUTPUT_PATH}/${OPENSSH}/bin -p mkdir ${OUTPUT_PATH}/${OPENSSH}/sbin -p mkdir ${OUTPUT_PATH}/${OPENSSH}/etc -p mkdir ${OUTPUT_PATH}/${OPENSSH}/libexec -p cp scp sftp ssh ssh-add ssh-agent \ ssh-keygen ssh-keyscan ${OUTPUT_PATH}/${OPENSSH}/bin cp moduli ssh_config sshd_config ${OUTPUT_PATH}/${OPENSSH}/etc cp sftp-server ssh-keysign ${OUTPUT_PATH}/${OPENSSH}/libexec cp sshd ${OUTPUT_PATH}/${OPENSSH}/sbin #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/ } make_key () { cd ${BASE}/source/${OPENSSH} 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/目录下 cp ssh_host*key ${OUTPUT_PATH}/${OPENSSH}/etc } make_ssh () { cd ${BASE}/source/${OPENSSH} ./configure \ --host=${BUILD_HOST} \ --with-libs --with-zlib=${OUTPUT_PATH}/${ZLIB} \ --with-ssl-dir=${OUTPUT_PATH}/${OPENSSL} \ --disable-etc-default-login \ CC=${BUILD_HOST}-gcc \ AR=${BUILD_HOST}-ar make -j4 # 不需要 install } make_dirs sudo ls download_package tar_package make_zlib make_ssl make_ssh do_copy make_key exit $?
开发板准备:
新建以下目录
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:
#! /bin/sh sshd=/usr/local/sbin/sshd test -x case "$1" in start) echo -n "Starting sshd daemon" start-stop-daemon --start --quiet --exec $sshd -b echo "." ;; stop) echo -n "Stopping sshd" start-stop-daemon --stop --quiet --exec $sshd echo "." ;; restart) echo -n "Stopping sshd" start-stop-daemon --stop --quiet --exec $sshd echo "." echo -n "Waiting for sshd to die off" ; do echo -n "." done echo "" echo -n "Starting sshd daemon" start-stop-daemon --start --quiet --exec $sshd -b echo "." ;; *) echo "Usage: /etc/init.d/sshd {start|stop|restart}" exit esac exit
Arm-Linux 移植 ssh的更多相关文章
- arm linux 移植 x265
背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...
- Linux 安装 go 以及 arm linux 移植 go
背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...
- arm linux 移植 MQTT (paho、mosquitto)
前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...
- arm linux 移植 ffmpeg 库 + x264
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- arm linux 移植 PHP
背景: PHP 是世界上最好的语言. host平台 :Ubuntu 16.04 arm平台 : 3531d arm-gcc :4.9.4 php :7.1.30 zlib :1.2.11 libxml ...
- arm linux 移植支持 HP打印机
背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...
- arm linux 移植 gdb/gdbserver
背景 调试工具gdb的使用对于嵌入式Linux开发人员来说是一项不可少的技能. 目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机 ...
- arm linux 移植 udhcp 与 使用
背景 在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址. udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDH ...
- arm linux 移植 rsync
背景: 在产品开发中可以使用rsync进行大文件的拷贝,断点续传. host平台 :Ubuntu 16.04 arm平台 : 3531d rsync :3.1.3 arm-gcc :4.9.4 ...
- arm linux 移植 jpeg
背景: host平台 :Ubuntu 16.04 arm平台 : S5P6818 jpeg :v9c arm-gcc :4.8.1 主机准备: 运行以下脚本: ## # Copyright By Sc ...
随机推荐
- linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息
zhuazai:https://blog.csdn.net/sty945/article/details/79830915 前言 ls命令 ls -a ls -l ll du命令 du -s du - ...
- Statement.setQueryTimeout(seconds)在家中环境的再次试验 证明此语句还是有效的
对比实验:https://www.cnblogs.com/xiandedanteng/p/11955887.html 这次实验的环境是T440p上安装的Windows版Oracle11g,版本为: O ...
- phpstorm yii2框架的redis和mongodb提示
随便找个目录创建一个 yii_helper.php 文件,内容如下: /** * Class Yii */ class Yii { /** * @var MyApplication */ public ...
- docker 打印带时间的日志
1, 根据容器日志查看连接情况 docker logs 684 (因为从6.30日开是打印,太慢了.) 2,docker带参数的打印出日志 docker logs 684 --since=&quo ...
- PostgreSQL 数据库备份与恢复 pd_dump pg_restore
备份 PG 数据库生成的文件可以有两种,一种是 SQL 文件,一种是二进制文件,二进制文件只能使用 pg_restore 进行恢复. PostgreSQL 数据库操作简要说明 PostgreSQL数据 ...
- CentOS 7 配置 nginx php-fpm 详细教程
CentOS 7 配置 Nginx 的步骤如下: 首先更新 yum,没有安装 yum 的自行安装 yum update 1. 安装 Nginx yum install nginx 开启 Nginx 并 ...
- flutter 路由动画
import 'package:flutter/material.dart'; import 'package:flutter_app/pages/FirstPage.dart'; void main ...
- Python3基础 交换两个变量的值
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- 004-行为型-04-迭代器模式(Iterator)
一.概述 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示. 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部 ...
- RabbitMQ 入门教程(PHP版) 延迟队列,延迟任务
延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...