0005 openssh移植

参考链接

移植OpenSSH

移植OpenSSH主要包含三大部分:

  • zlib的移植,zlib 官网;
  • openssl的移植,openssl 官网
  • openssh的移植,openssh 官网

zlib

  1. zlib的编译安装

     //解压
     tar -xzvf zlib-1.2.1.2.tar.gz
     //创建编译脚本
     vim build_zlib.sh
     sudo chmod 777 build_zlib.sh
    

    build_zlib.sh

     # !/bin/sh
     make clean
     CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihf-as ./configure  --prefix=$(pwd)/../tools/zlib
     make
     make install
    

    配置参数不能换行否则编译的为PC端库文件

  2. zlib的移植
    lib 目录下的 zlib 库文件拷贝到开发板根文件系统的/lib 目录下

     //验证编译出的库文件是否为arm平台
     objdump -a ./lib/*      ->文件格式 elf32-little
     sudo cp ./lib/* /home/li/linux/nfs/rootfs/lib -rfa
    

openssl

  1. openssl的 编译安装

     tar -xzvf openssl-1.0.2p.tar.gz
     //创建编译脚本
     vim build_openssl.sh
     sudo chmod 777 build_openssl.sh
    

    build_openssl.sh

     # !/bin/sh
     make clean
     CROSS_COMPILE=arm-linux-gnueabihf- ./Configure linux-armv4 shared no-asm --prefix=$(pwd)/../tools/openssl
     make -j 6
     make install
    
  2. openssl 的移植
    将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下

     sudo cp ./lib/libcrypto.so* /home/li/linux/nfs/rootfs/lib/ -af
     sudo cp ./lib/libssl.so* /home/li/linux/nfs/rootfs/lib/ -af
    

openssh

  1. 编译openssh

     tar -xvf  openssh-5.6p1.tar.gz
     
     vim build_openssh.sh
     sudo chmod 777  build_openssh.sh
    

    build_openssh.sh

     #!/bin/sh
     make clean
     ./configure --host=arm-linux-gnueabihf --with-libs --with-ssl-dir=/home/li/linux/0005_soft/openssh/code_tar/tools/openssl --with-zlib=/home/li/linux/0005_soft/openssh/code_tar/tools/zlib --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar
     
     make -j 6
    

    “–with-zlib”参数用于指定 zlib 库所在的目录,
    “–with-ssl-dir”参数用于指定 openssl 库所在的目录

  2. 移植openssh
    在开发板文件系统中创建 以下文件夹

     mkdir /home/li/linux/nfs/rootfs/usr/local/bin -p
     mkdir /home/li/linux/nfs/rootfs/usr/local/sbin -p
     mkdir /home/li/linux/nfs/rootfs/usr/local/libexec/ -p
     mkdir /home/li/linux/nfs/rootfs/usr/local/etc -p
     mkdir /home/li/linux/nfs/rootfs/var/run -p
     mkdir /home/li/linux/nfs/rootfs/var/empty/ -p
    

    scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keysca拷贝到 /usr/local/bin 目录下:
    sshd拷贝到 /uusr/local/sbin 目录下:
    moduli ssh_config sshd_config 拷贝到 /usr/local/etc 目录下:
    sftp-server ssh-keysign 拷贝到 /usr/local/libexec 目录下:

     sudo cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan /home/li/linux/nfs/rootfs/usr/local/bin
     sudo cp sshd /home/li/linux/nfs/rootfs/usr/local/sbin
     sudo cp moduli ssh_config sshd_config  /home/li/linux/nfs/rootfs/usr/local/etc
     sudo cp sftp-server ssh-keysign  /home/li/linux/nfs/rootfs/usr/local/libexec
    

    开发板文件系统 /bin /sbin 目录文件创建软连接需要在开发板上操作

     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
     
     软连接创建完成以后就可以直接调用上面 ssh 相关命令了。
    
  3. 启用ssh登录账户

     vi /usr/local/etc/sshd_config 
     //找到“#PermitRootLogin”所在行
     PermitRootLogin yes”
    
  4. 配置openssh

    由于根文件系统是新编译的用户密码和用户组文件不存在,因此需要完善以下文件

     vi /etc/passwd
     root:x:0:0:root:/root:/bin/sh
    
     vi /etc/group
     root:x:0:
    
     创建ssh账户主目录
     mkdir /home /home/sshd
    

    添加ssh账户设置密码

     adduser  sshd
    
  5. 创建 openssh 密钥

    方法1:在开发板上使用 ssh-keygen用于创建密钥

     cd /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 ""
    

    方法2:在电脑端生成密钥并拷贝到开发板中
    进入openssh目录

     cd  /home/li/linux/0005_soft/openssh/code_tar/openssh-5.6p1
     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 ""
     ls ssh_host* 
     //修改权限
     sudo chmod 600 ssh_host_rsa_key ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key
     sudo cp ssh_host_* /home/li/linux/nfs/rootfs/usr/local/etc/
    
  6. 启用ssh

     /sbin/sshd
     //可以在/etc/init.d/rcS 文件中加入如下命令,实现 ssh 服务开机自启动:
     /sbin/sshd &
    
  7. 验证ssh

    ssh [email protected]

你可能感兴趣的:(嵌入Linux,根文件系统,linux,ssh,arm)