在Motavista开发板上使用OpenSSH
实验室目前有多名Davici开发工作人员,但是目前开发板只有一块,每当调试的时候都需要从他人机器上将开发板拔下再插到本机的串口。这给平时的开发工作带来很大的不便。
SSH服务和Telnet服务一样,通过远程登录登录到系统,在远程操控系统。但它与Telnet的不同点就是:Telnet在传输的过程中是平文传输,而SSH是将传输内容加密,在传送的过程中保证了传送内容的保密性,从而提高了系统的安全性。
本文描述了使用Motavista提供的交叉编译器编译OpenSSH源代码的过程,并在开发板上部署OpenSSH-Server。
下载OpenSSH
在编译源代码前,首先需要在以下地址下载OpenSSH、OpenSSL和Zlib
我们这里选择的版本为:openssh-5.1p1、openssl-0.9.8h和zlib-1.2.3。
解压源代码到工作路径
进入Linux超级终端,在命令行中输入:
tar -zxvf openssh-5.1p1.tar.gz -C /prj/share/source
tar -zxvf openssl-0.9.8h.tar.gz -C /prj/share/source
tar -zxvf zlib-1.2.3.tar.gz -C /prj/share/source
解压后如下图所示:
编译Zlib
进入目录zlib-1.2.3,运行配置文件:
prefix=/prj/share/ CC=/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc ./configure
将在目录下一个生成Makefile文件,用文档编辑器打开这个文件,找到以下信息:
AR=ar rc
修改为:
AR=/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-ar rc
执行:
make
make install
zlib安装完毕:
编译OpenSSL
进入OpenSSL目录,同样的,先运行configura命令,生成makefile文件:
./Configure –prefix=/prj/share os/complier:/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc
编辑Makefile,将
AR= ar
修改为:
AR=/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-ar $(ARFLAGS) r
运行:
make
make install
安装完后/prj/share/lib目录如下:
编译OpenSSH
进入OpenSSH目录,运行:
./configure CC=/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc AR=/opt/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-ar –with-libs –with-zlib=/prj/share –with-ssl-dir=/prj/share –host arm-montavista-linux –disable-etc-default-login
如果Makefile文件生成成功,屏幕将生成如下内容:
运行make
接下来我们需要把编译好了的文件部署到开发板上,由于这里使用的是交叉编译器编译,不能使用make install命令安装,而是直接把文件复制目标板目录下。
我们所用的开发板通过nfs协议加载文件系统,nfs目录为/prj/filesys。在超级终端中执行以下复制指令:
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan /prj/filesys/usr/local/bin
cp moduli ssh_config sshd_config /prj/filesys/usr/local/etc
cp sftp-server ssh-keysign /prj/filesys/usr/local/libexec
cp sshd /prj/filesys/usr/local/sbin
cd /prj/share/lib
cp -a libz.a libcrypto.a libssl.a engines pkgconfig /prj/filesys/lib
到目前为止,我们成功地在开发板上部署了OpenSSH。
生成密钥
到这一步工作已进入尾声,接下来的操作将通过虚拟终端进行。
将开发板和主机的串口连接,运行虚拟终端,登陆后,执行以下操作,在sshd所在的目录下生成密钥:
ssh-keygen -t dsa -f /usr/local/bin/ssh_host_dsa_key -N “”
ssh-keygen -t rsa -f /usr/local/bin/ssh_host_rsa_key -N “”
此外,可能还需要修改/var/empty目录的权限:
chown -R root.root /var/empty
chmod 744 /var/empty
最后,运行/usr/local/sbin/sshd,如无异常信息则表示openssh运行成功!
一些收尾工作
创建root密码
由于我们的montavista系统下root默认是没有密码的,因此还需要创建密码,才能登陆到开发板,在超级终端中输入:
passwd root
将openssh设为自动运行
执行
vi /etc/init.d/rc
在最后加上:
/usr/local/sbin/sshd
使用putty登陆到开发板
PUTTY是一套免费的 SSH / Telnet 程序,它可以连接上支持 SSH Telnet 联机的站台,并且可自动取得对方的系统指纹码 (Fingerprint)。使用说明参见:利用Visual Studio和OpenSSH搭建Codec Engine开发环境。
小节
本文首先使用交叉编译器将OpenSSH源文件编译成能运行在MontaVista操作系统下的程序,然后将sshd部署到目标板,并设置成自动运行。
这样做的好处是,在开发板“紧张”的情况下,通过OpenSSH,实现远程开发人员共享使用开发板的功能。从此以后,大家不需要为了运行某个程序将开发板拆来拆去了。
广告
最近看上了一款迷你机床。有钱出钱,没钱的……那就去抢钱吧。







