SSH协议远程开发板Linux系统

Posted DS小龙哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH协议远程开发板Linux系统相关的知识,希望对你有一定的参考价值。


SSH远程登录嵌入式Linux开发板


SSH是一种网络协议,用于加密两台计算机之间的通信 ; SSH的架构是服务器-客户端模式,使用的是非对称加密非对称加密:非对称加密有两个秘钥,“公钥”和“私钥” 两个秘钥的特性:公钥加密后的秘闻,只能通过对应的私钥进行解密;而通过公钥推理出私钥的可能性微乎其微,私钥是Server端独有。

SSH协议远程开发板Linux系统_linux

1)远程Server收到用户的登录请求,把自己的公钥发给用户

2)用户使用这个公钥,将登录密码加密后,发送回来

3)远程Server用自己的私钥,解密登录密码,如果密码正确,就同意用户登录



  • 移植需要安装的库:

下载zlib

​http://www.zlib.net​

下载openssl

​http://www.openssl.org/source/​

下载openssh

​http://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/​

交叉编译zlib​

官网下载地址:http://www.zlib.net/

编译步骤:

# tar xvf zlib-1.2.5.tar.gz

# cd zlib-1.2.5/

# export CC=arm-linux-gcc //用CC变量来指定交叉工具链

# ./configure --prefix=$PWD/_install //最后生成的库、头文件和man文件都在当前目录的_install目录下

# make && make install

编译后的文件布局:

SSH协议远程开发板Linux系统_linux_02


图1-1

  • 安装tree命令:

# apt-get install tree

第二章交叉编译libopenssl 库 ​

Libopenssl 库主要是做加密作用。 下载链接:http://distfiles.macports.org/openssl/

编译步骤:

# tar xf openssl-1.0.2e.tar.gz

# cd openssl-1.0.2e

# ./config shared no-asm --prefix=$PWD/tmp

# vim Makefile +62 #修改过程参考图2-1

#make && make install

图2-1 修改Makefile

编译安装成功后的目录:

图2-2

第三章交叉编译openssh​

解压:# tar xvf openssh-4.6p1.tar.tar

配置:

./configure -host=arm-linux -with-libs -with-zlib=/work/zlib/zlib-1.2.5/_install/lib/ -with-ssl-dir=$PWD/tmp -disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar

编译:make

第四章搭建SSH环境​

  1. 创建目标板子工作目录(在开发板上执行)

mkdir /usr/sbin -p

mkdir /usr/local/bin -p

mkdir /usr/local/libexec -p

mkdir /usr/local/etc/ -p

mkdir /var/run/ -p

mkdir /var/empty/ -p

  1. 拷贝ssh编译生成的可执行文件到目标板子(拷贝的文件在openssh编译目录下)

# cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan sshd /work/rootfs/usr/local/bin/

  1. 拷贝服务器循环命令到目标板子

# cp sftp-server ssh-keysign /work/rootfs/usr/local/libexec/

  1. 拷贝配置文件到目标板子

# cp sshd_config ssh_config /work/rootfs/usr/local/etc/

  1. 生成key文件。在PC机编译openssh的根目录下执行以下3条命令:

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

执行效果图:

图2-3

  1. 拷贝生成的key文件到目标开发板

root@xl:/work/openssh/openssh-4.6p1# cp ssh_host_*_key /work/rootfs/usr/local/etc/ -v

"ssh_host_dsa_key" -> "/work/rootfs/usr/local/etc/ssh_host_dsa_key"

"ssh_host_ecdsa_key" -> "/work/rootfs/usr/local/etc/ssh_host_ecdsa_key"

"ssh_host_rsa_key" -> "/work/rootfs/usr/local/etc/ssh_host_rsa_key"

或者:

# ssh-keygen -t rsa -f /ssh_host_rsa_key

# ssh-keygen -t dsa -f /ssh_host_dsa_key

  1. 拷贝用户组和密码文件将PC机Linux系统/etc目录下的passwdgroup拷贝到目标开发板/etc目录下(制作文件系统时拷贝过就不需要拷贝了)。
    注意:需要将passwd文件中的脚本解析器bash改为sh。
    并且在/etc/passwd 中添加下面这一行:

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

  1. 设置开发板root密码

# passwd root

输入设置的密码。

  1. 修改配置文件打开开发板/usr/local/sshd_config文件,将PermitRootLogin yes语句前的注释“#”号去掉。
  2. 修改权限将开发板/usr/local/etc/下的ssh_host_*几个文件的权限改为700。
  3. 进入开发板命令行,启动SSH服务

# /usr/local/bin/sshd

运行后ps查看一下是否启动成功:

图2-4

  1. 通过PClinux系统登录开发板

# ssh root@192.168.0.199

192.168.0.199:开发板的IP地址。

图2-5

  1. 是windows下CRT软件进行登录

图2-6 登录OK

第五章登录开发板


  • 登录开发板:
  • SSH协议远程开发板Linux系统_开发板_03


  • 退出登录:

SSH协议远程开发板Linux系统_开发板_04


以上是关于SSH协议远程开发板Linux系统的主要内容,如果未能解决你的问题,请参考以下文章

使用SSH服务远程登录Linux主机

i.MX6ULL应用移植 | 移植OpenSSH 8.9到Linux开发板(zlibopensslopenssh)

SSH协议原理解析

建立目标板Linux系统

Linux SSH远程管理

嵌入式平台ssh开发环境搭建