SSH协议远程开发板Linux系统
Posted DS小龙哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH协议远程开发板Linux系统相关的知识,希望对你有一定的参考价值。
SSH远程登录嵌入式Linux开发板
SSH是一种网络协议,用于加密两台计算机之间的通信 ; SSH的架构是服务器-客户端模式,使用的是非对称加密非对称加密:非对称加密有两个秘钥,“公钥”和“私钥” 两个秘钥的特性:公钥加密后的秘闻,只能通过对应的私钥进行解密;而通过公钥推理出私钥的可能性微乎其微,私钥是Server端独有。
1)远程Server收到用户的登录请求,把自己的公钥发给用户
2)用户使用这个公钥,将登录密码加密后,发送回来
3)远程Server用自己的私钥,解密登录密码,如果密码正确,就同意用户登录
- 移植需要安装的库:
下载zlib | |
下载openssl | |
下载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 |
编译后的文件布局:
图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环境
- 创建目标板子工作目录(在开发板上执行)
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 |
- 拷贝ssh编译生成的可执行文件到目标板子(拷贝的文件在openssh编译目录下)
# cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan sshd /work/rootfs/usr/local/bin/ |
- 拷贝服务器循环命令到目标板子
# cp sftp-server ssh-keysign /work/rootfs/usr/local/libexec/ |
- 拷贝配置文件到目标板子
# cp sshd_config ssh_config /work/rootfs/usr/local/etc/ |
- 生成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
- 拷贝生成的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
- 拷贝用户组和密码文件将PC机Linux系统/etc目录下的passwd、group拷贝到目标开发板/etc目录下(制作文件系统时拷贝过就不需要拷贝了)。
注意:需要将passwd文件中的脚本解析器bash改为sh。
并且在/etc/passwd 中添加下面这一行:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin |
- 设置开发板root密码
# passwd root |
输入设置的密码。
- 修改配置文件打开开发板/usr/local/sshd_config文件,将PermitRootLogin yes语句前的注释“#”号去掉。
- 修改权限将开发板/usr/local/etc/下的ssh_host_*几个文件的权限改为700。
- 进入开发板命令行,启动SSH服务
# /usr/local/bin/sshd |
运行后ps查看一下是否启动成功:
图2-4
- 通过PClinux系统登录开发板
# ssh root@192.168.0.199 |
192.168.0.199:开发板的IP地址。
图2-5
- 是windows下CRT软件进行登录
图2-6 登录OK
第五章登录开发板
- 登录开发板:
- 退出登录:
以上是关于SSH协议远程开发板Linux系统的主要内容,如果未能解决你的问题,请参考以下文章