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

相关推荐
小小管写大大码8 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
zhang133830890759 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.10 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技10 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能
程序员允诺10 小时前
[DevOps实战] 彻底解决依赖地狱:如何编译全静态、可移植的 Xorriso 工具
运维·devops
酣大智10 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
一只自律的鸡11 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
!chen11 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
莫大33011 小时前
2核2G云服务器PHP8.5+MySQL9.0+Nginx(LNMP)安装WordPress网站详细教程
运维·服务器·nginx
刚刚入门的菜鸟11 小时前
php-curl
运维·web安全·php