Arm-Linux 移植 ssh

本文详细介绍如何在Ubuntu 18.04主机上编译并安装Zlib、OpenSSL及OpenSSH,以及如何在S5PV210开发板上配置和运行SSH服务,实现远程登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.cnblogs.com/schips/p/11173968.html

           https://my.oschina.net/gzhuo/blog/472989

host平台   :Ubuntu 18.04

 

arm平台   : S5PV210

 

主机准备:

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

mkdir ssh
cd ssh
mkdir  compressed  install  source

下载并解压有关的源码:

复制代码

cd compressed

wget -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

./configure --prefix=/home/xx/arm/ssh/install/zlib-1.2.11

# 修改编译器对应的变量值 ,注意是加入前缀,不要删除其他部分。(编译器使用能够在板子上运行编译的即可)
vi Makefile

  CC=arm-none-linux-gnueabi-gcc
  AR=arm-none-linux-gnueabi-ar rc
  CPP =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.1
  smime.pod around line 272: Expected text after =item, not a number
  smime.pod around line 276: Expected text after =item, not a number
  smime.pod around line 280: Expected text after =item, not a number
  smime.pod around line 285: Expected text after =item, not a number
  smime.pod around line 289: Expected text after =item, not a number
  POD 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-ar

make 
     #注意: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

 

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

passwd root

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

然后我出现报错:

1)找不到liz

sshd: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

解决办法:在主机中找到这个libz.so.1加入板子文件系统的lib目录下

可以在主机中用locate  文件名寻找这个文件

2)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/usr/local/etc/ssh_host_key' are too open
等错误

解决办法是:#cd /usr/local/etc
#chmod 0600 ssh_host*

 

重新运行:#/usr/sbin/sshd
出现“Could not load host key: /usr/local/etc/ssh_host_ecdsa_key”
不用管。
#ps
即可找到

此时便可以利用ssh进行通信!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值