• OpenSSH移植到Linux开发板


    OpenSSH移植到Linux开发板


    前言

    Linux开发中,有时候需要远程登录到开发板上对系统进行一些操作,这个时候就需要用到SSH服务。SSH(Secure Shell 安全外壳协议)是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,OpenSSH是SSH协议的一个免费开源版本。

    这里一共需要移植三个软件包:zlib,openssl和openssh,可依次到官网下载对应的源码:
    zlib官网:http://www.zlib.net/
    openssl 官网:https://www.openssl.org/source/
    opnssh 官网: http://www.openssh.com


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、移植zlib库

    在官网我下载的是1.2.11版本的,将下载的zlib-1.2.11.tar.gz 拷贝到本地Ubuntu中进行解压

    tar -xvzf zlib-1.2.11.tar.gz
    
    • 1

    解压完成后,创建一个zlib文件夹,然后进行解压后的zlib-1.2.11 源码文件中,配置并编译

    #1. 配置命令
    CC=arm-linux-gnueabihf-gcc
    LD=arm-linux-gnueabihf-ld
    AD=arm-linux-gnueabihf-as
    ./configure --prefix=/home/hx/linux/tools/zlib 
    #注意 以上命令以空格为界,这里为了美观 用了换行
    #CC LD AD是根据自己所使用的交叉编译器配置
    #--prefix 是之前创建zlib目录所在的路径
    
    #2. 配置完成 开始编译
    make
    #3. 开始安装
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    编译完成后,将zlib目录下的lib中库文件移植到开发板的/lib目录下
    在这里插入图片描述

    二、 移植openssl库

    在官网下载的是1.1版本的,将下载的openssl-1.1.ld.tar.gz拷贝到本地Ubuntu中,并解压

    tar -xvzf openssl-1.1.ld.tar.gz
    
    • 1

    解压完成后,创建一个openssl文件夹,然后进行解压后的openssl-1.1.ld 源码文件中,配置并编译

    #1. 配置命令
    ./Configure linux-armv4 shared no-asm 
    --prefix=/home/hx/linux/tools/openssl 
    CROSS_COMPILE=arm-linux-gnueabihf-
    #注意 以上命令以空格为界,这里为了美观 用了换行
    #linux-armv4 是32位ARM凭条 没有armv7的选项
    #--prefix 是之前创建openssl目录所在的路径
    
    #2. 配置完成 开始编译
    make
    #3. 开始安装
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    编译完成后会在openssl/lib下生成libcrypto和libssl库,将这些库拷贝到开发板的/usr/lib目录下
    在这里插入图片描述

    三、 移植openssh库

    在官网下载到openssh-8.2p1.tar.gz,拷贝到本地Ubuntu中并解压

    tar -xvzf openssh-8.2p1.tar.gz
    
    • 1

    解压后进入到openssh-8.2p1目录,开始配置和编译

    #1. 配置
    ./configure --host=arm-linux-gnueabihf --with-libs 
    --with-zlib=/home/hx/linux/tools/zlib --with-ssl-dir=/home/hx/linux/tools/openssl 
    --disable-etcdefault-login CC=arm-linux-gnueabihf-gcc
    AR=arm-linux-gnueabihf-ar //配置
    #注意 以上命令以空格为界,这里为了美观 用了换行
    #--with-zlib参数用于指定 zlib 库所在的目录
    #--with-ssl-dir参数用于指定 openssl 库所在的目录
    #2. 编译 不用make install
    make
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    将编译完成后的文件移植到linux开发板中

    1. 在开发板中创建目录

    在开发板创建以下目录

    /usr/local/bin
    /usr/local/sbin
    /usr/local/libexec
    /usr/local/etc
    /var/run
    /var/empty
    
    mkdir /usr/local/bin -p
    mkdir /usr/local/sbin -p
    mkdir /usr/local/libexec/ -p
    mkdir /usr/local/etc -p
    mkdir /var/run -p
    mkdir /var/empty/ -p
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2. 将文件拷贝到对应目录下

    1. /usr/local/bin 拷贝以下文件
    scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan
    
    2. /usr/local/sbin 拷贝sshd
    3. /usr/local/etc 拷贝moduli ssh_config sshd_config
    4. /usr/local/libexec 拷贝sftp-server ssh-keysign
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 创建对应软连接

    cd /bin/
    ln -s /usr/local/bin/scp
    ln -s /usr/local/bin/sftp
    ln -s /usr/local/bin/ssh
    ln -s /usr/local/bin/ssh-add
    ln -s /usr/local/bin/ssh-agent
    ln -s /usr/local/bin/ssh-keygen
    ln -s /usr/local/bin/ssh-keyscan
    
    cd /sbin/
    ln -s /usr/local/sbin/sshd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    软连接创建完成以后就可以直接调用上面 ssh 相关命令了

    将/usr/local/etc/sshd_config文件的 #PermitRootLogin改为
    PermitRootLogin yes

    4. 开发板上生成密钥文件

    进入到开发板/usr/local/etc下

    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-keygen -t ed25519 -f ssh_host_ed25519_key -N ""
    
    • 1
    • 2
    • 3
    • 4

    完成以后就会在/usr/local/etc 目录下产生 8 个以“ssh_host_”开头的秘钥文件
    在这里插入图片描述

    5. 开启SSH

    直接输入命令

    /sbin/sshd //启动 sshd 服务
    
    #也可以在/etc/init.d/rcS 文件中加入如下命令,实现 ssh 服务开机自启动
    /sbin/sshd &
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    windows docker里安装并使用mysql(内含mysql主从搭建)
    Redis 第一次作业
    面试突击78:@Autowired 和 @Resource 有什么区别?
    如何写一份HR主动给你发送面试邀请的简历
    jenkins gitlab CI/CD
    场景交互与场景漫游-交运算与对象选取(8-1)
    【Linux】gdb工具使用
    idea工具,debug模式小技巧,调试正确姿势。快进收藏夹。
    【.NET全栈】第16章 Web开发
    基于html宠物用品商城项目的设计与实现(学生网页设计作业源码)
  • 原文地址:https://blog.csdn.net/qq_41828707/article/details/127925395