ARM交叉编译搭建SSH

首先搭建好arm-linux交叉编译环境,开发板和主机可以ping通。

一、下载需要的源码

下载zlib: zlib-1.2.3.tar.gz
下载ssl: openssl-0.9.8d.tar.gz
下载ssh: openssh-4.6p1.tar.gz

二、交叉编译

新建目录/home/leo/ssh,并且将三个源码复制到该目录下。

cp zlib-1.2.3.tar.gz openssl-0.9.8d.tar.gz openssh-4.6p1.tar.gz /home/arm/sshwork

/home/leo/ssh下新建目录lib,用来保存编译zlib和openssl生成的文件。

编译zlib
c 复制代码
cd zlib-1.2.3/
./configure --prefix=/home/leo/ssh/lib/zlib-1.2.3
编辑makefile
CC=arm-linux-gcc
AR=arm-linux-ar rc
CPP =arm-linux-gcc -E
LDSHARED=arm-linux-gcc

make
make install
编译openssl
c 复制代码
cd openssl-0.9.8d
./Configure --prefix=/home/leo/ssh/lib/openssl-0.9.8d os/compiler:arm-linux-gcc
make
make install
编译openssh
c 复制代码
cd openssh-4.6p1/
./configure --host=arm-linux --with-libs --with-zlib=/home/leo/ssh/lib/zlib-1.2.3
--with-ssl-dir=/home/leo/ssh/lib/openssl-0.9.8d --disable-etc-default-login
CC=arm-linux-gcc AR=arm-linux-ar
make
不用make install
完成后当前目录下会生成SSH可执行文件

三、安装SSH

配置文件

确保目标板上有以下目录

bash 复制代码
/usr/local/bin/
/usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
chmod 755 /var/empty
  1. 复制 /home/leo/ssh/openssh-4.6p1 目录下的 sshd 到开发板的 /usr/local/sbin/
  2. 复制 ** scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ** 到开发板的 /usr/local/bin
  3. 复制 sftp-server ssh-keysign/usr/local/libexec
  4. 复制 sshd_config ssh_config/usr/local/etc/
  5. 【可以省略此步骤】复制 /home/leo/ssh/zlib-1.2.3/lib/ 目录下的 libz.so.1.2.5/lib/
    然后建立软链接 ln -s libz.so.1.2.5 libz.so.1
生成Key文件

在开发板上,进入/usr/local/etc/目录,执行以下命令生成key:

C 复制代码
../bin/ssh-keygen -t rsa1 -f ssh_host_key -N ""
../bin/ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
../bin/ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

** 修改当前目录下sshd_config文件 **

** /etc/ssh 改为 /usr/local/etc **

c 复制代码
#  HostKey for protocol version 1
HostKey /etc/ssh/ssh_host_key  》》》 HostKey /usr/local/etc/ssh_host_key
#  HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key 》》》 HostKey /usr/local/etc/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key 》》》 HostKey /usr/local/etc/ssh_host_dsa_key
设置系统时间

date

Fri Aug 20 16:02:40 UTC 2021

如果开发板时间是1970需要设置为当前时间,否则ssh登录一直报错:

c 复制代码
date -s "2021-08-20 16:11"

改时间后设置root密码

c 复制代码
passwd root
其他配置

开机自动设置IP

c 复制代码
echo "ifconfig eth0 10.10.82.45 netmask 255.255.255.0" >> /etc/profile

开机自动设置IP

c 复制代码
echo "ifconfig eth0 10.10.82.45 netmask 255.255.255.0" >> /etc/profile

添加用户

复制主机 /etc 下的 passwd shadow group 出来,删除不需要的一些用户

将passwd的 /bin/bash 改为 /bin/sh,然后复制到开发板 /etc 下

四、启动SSH

绝对路径启动sshd

c 复制代码
/usr/sbin/sshd

可能出现的错误:

c 复制代码
Permissions 0755 for '/usr/local/etc/ssh_host_dsa_key' are too open.
//将开发板/usr/local/etc/下的key文件 ssh_host_* 权限改为700。

Permission denied (publickey,password,keyboard-interactive).
//打开开发板/usr/local/sshd_config,将PermitRootLogin yes前的注释"#"号去掉。
主机: $  ssh root@10.10.82.45(开发板的ip)//root密码就是开发板root密码,如果没有设置,用passwd root设置。

参考:https://blog.csdn.net/gubenpeiyuan/article/details/32325691

相关推荐
七夜zippoe7 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6488 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满8 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠8 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9039 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技10 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀10 小时前
Linux环境变量
linux·运维·服务器
zzzsde10 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º12 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~12 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化