开发板ssh移植、搭建

开发板ssh移植、搭建

1. 在ubuntu中下载ssh相关源码包

  1. openssh-7.3p1安装包.下载地址如下
    1. 官网下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
  2. openssl-1.0.1t安装包.下载地址如下
    1. 官网下载地址:https://www.openssl.org/source/openssl-1.0.1t.tar.gz
  3. zlib-1.2.11安装包.下载地址如下
    1. http://zlib.net

2. 交叉编译源码

  1. zlib的交叉编译。

    1. 解压zlibtar -zxvf zlib-1.2.11.tar.gz,进入文件夹。
    2. 创建zlib安装目录。mkdir /usr/local/zlib/
    3. 配置。./configure --prefix=/usr/local/zlib.
      打开Makefile文件。vim Makefile. 修改交叉工具链,内容如下。
      CC=arm-linux-gnueabihf-gcc
      AR=arm-linux-gnueabihf-ar
      RANLIB=arm-linux-gnueabihf-ranlib
      CPP=arm-linux-gnueabihf-gcc -E
      LDSHARED=arm-linux-gnueabihf-gcc
      
    4. 编译 make.
    5. 编译完成后,进行安装。make install
  2. openssl的交叉编译。

    1. 解压openssl.tar -zxvf openssl-1.0.1t.tar.gz

    2. 创建安装目录。mkdir /usr/local/openssl.

    3. 配置。./Configure --prefix=/usr/local/openssl os/compiler:arm-linux-gnueabihf-gcc

    4. 编译。make.

    5. 安装。make install.

    6. 可能会出现的错误。

      1. make错误提示为:configure: error: *** OpenSSL headers missing - please install first or check config.log ***
        1. 解决方法:配置时使用-fPIC.如./Configure --prefix=/usr/local/ssl os/compiler:arm-linux-gnueabihf-gcc -fPIC.
  3. openssh的交叉编译。

    1. 解压.tar -zxvf openssh-7.3p1.tar.gz
    2. 创建安装目录。mkdir /usr/local/openssh.
    3. 配置。./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --disable-etc-default-login --disable-strip CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar.
    4. 编译。make.

3. 移植

  1. 在开发板的中创建如下目录:
    1. /usr/local/openssh/bin.
    2. /usr/local/openssh/etc.
    3. /usr/local/libexec.
    4. /var/run.
    5. /var/empty.
  2. 将步骤2中编译生成的如下文件拷贝到开发板相应目录。
    1. 将如下文件scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan拷贝到开发板的/usr/local/openssh/bin目录下。
    2. 将如下文件moduli ssh_config sshd_config拷贝到开发板的usr/local/openssh/etc目录下。
    3. 将如下文件sftp-server ssh-keysign拷贝到开发板的/usr/local/libexec目录下。
    4. 将文件sshd拷贝到开发板的/etc/init.d目录下。
    5. xxx/zlib-x.x.x/lib/下文件libz.so.1.2.5拷贝到开发板的/lib/目录下。并在/lib/目录下创建软连接ln -s libz.so.1.2.5 libz.so.1.
  3. 在开发板上建立执行文件的软链接。
    1. 进入/bin目录,执行下述命令。
      ln -s /usr/local/openssh/bin/scp
      ln -s /usr/local/openssh/bin/sftp
      ln -s /usr/local/openssh/bin/ssh
      ln -s /usr/local/openssh/bin/ssh-add
      ln -s /usr/local/openssh/bin/ssh-agent
      ln -s /usr/local/openssh/bin/ssh-keygen
      ln -s /usr/local/openssh/bin/ssh-keyscan
    2. 进入/sbin目录,执行下述命令
      ln -s /etc/rc.d/init.d/sshd
  4. 创建sshd用户
    1. 创建相关文件(如果不存在)。
      1. touch /etc/passwd.
      2. touch /etc/group.
      3. touch /etc/shadow.
    2. 创建sshd用户。
      addgroup sshd
      adduser -G sshd -g 'sshd privsep' -h /var/empty -s /bin/ssh sshd
  5. 产生密钥对,第一个密钥可能生成时会出错,不用理会,跳过继续执行其他的。
    cd /usr/local/openssh/etc/
    ssh-keygen -t rsa1 -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-keygen -t ed25519 -f ssh_host_ed25519_key -N ""
  6. 为支持root用户登录,需要修改sshd_config配置文件
    1. 打开sshd_config文件.vi /usr/local/openssh/etc/sshd_config
    2. PermitRootLogin xxx选项修改为PermitRootLogin yes.
  7. 如果root用户没有密码等,可能还需要修改密码。

4. ssh的使用

  1. 重启开发板。
  2. 启动ssh服务器。/sbin/sshd。此步骤一般放置在启动文件中。
  3. 使用客户端登录。

可能会遇到的问题。

  1. 登录后,没有命令行提示符,输入字符无效,比如按回车健时出现^M的字样。解决方法见注意事项1.
  2. 使用root用户登录时,提示拒绝访问。
    1. 解决方法:见移植中的修改sshd_config文件部分。
  3. 用户登录时,提示密码过期。
    1. 解决方法:修改系统时钟为当前时间。
  4. 如果遇到root用户登录不能解决的问题,可以先创建一个普通用户进行测试。

注意事项

  1. /dev/pts目录和devpts文件系统是登录ssh所必须的,所以一定要保证目录的存在和文件系统的挂载,它俩一般在放在rcS的启动文件中。
    1. 确认存在/dev/pts目录,不存在时创建。mkdir /dev/pts.
    2. 挂载devpts文件系统。mount -t devpts devpts /dev/pts.

关于技术交流

此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值