加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Arm-Linux 移植 ssh

发布时间:2020-12-13 22:40:31 所属栏目:Linux 来源:网络整理
导读:背景: 自己拥有一块开发板,但是苦于上面没有ssh,比较不方便。正好趁这个机会,移植ssh。我们使用的ssh是openssh。 host平台 :Ubuntu 18.04 arm平台 : S5P6818 ? openssh? ? :4.6p1 openssl ? :0.9.8e zlib ? :1.2.11 arm-gcc :4.8.1 主机准备: 为

背景:

自己拥有一块开发板,但是苦于上面没有ssh,比较不方便。正好趁这个机会,移植ssh。我们使用的ssh是openssh。

主机准备:

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

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
# 红色部分配置路径为 ssh/install 的绝对路径
./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机 /work/ssh/source/openssh-4.6p1/ 目录下的scp? sftp? ssh? ssh-add? ssh-agent? ssh-keygen? ssh-keyscan? 拷贝到目标板/usr/local/bin??? #cp scp? sftp? ssh? ssh-add? ssh-agent? ssh-keygen? ssh-keyscan ~/nfs/ulb/ moduli ssh_config sshd_config拷贝到目标板 /usr/local/etc??? # cp moduli ssh_config sshd_config ~/nfs/ulesftp-server? ssh-keysign 拷贝到目标板 /usr/local/libexec??? # cp sftp-server? ssh-keysign? ~/nfs/ullsshd 拷贝到目标板 /usr/local/sbin/??? # sshd ~/nfs/uls??生成Key文件在PC机 /work/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这3个文件copy到目标板的 /usr/local/etc/目录下修改目标板passwd文件在/etc/passwd 中添加下面这一行cp /etc/passwd? /etc/passwd_bakecho "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin" >> /etc/passwd??只需要运行一次 /usr/local/sbin/sshd 此后即可使用远程登录如果连接不上,请直接运行 /usr/local/sbin/sshd 查看是什么原因有提示 动态链接库 找不到的(工具链的动态链接库)有提示 ssh_host 文件找不到的 生成即可??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读