您的位置:首页 > 运维架构

移植openssh至嵌入式ARM开发板

2013-03-28 16:18 337 查看
移植openssh至嵌入式ARM开发板

开发板:SBC6020

CPU:AT91SAM9G20
Linux内核:2.6.30
板子拿到手其中的telnet服务不好用,所以就想着移植一个ssh的服务器上去。
2. 首先下载源码包:

openssh-4.6p1.tar.gz http://www.openssh.com/portable.html

openssh-3.5p1.rar (我在windows下又压缩了一下,所以要重新在windows下解压一下)

openssl-0.9.8e.tar.gz http://www.openssl.org/source

zlib-1.2.3.tar.tar http://www.zlib.net/


zlib-1.2.3.rar 。
ssh服务需要依赖zlib和ssl库。
当然编译工具要准备好了,我用的是arm-liunx-gcc,安装在ubuntu 10上。

3. 交叉编译

建立目录结构

/EmbSSH

compressed 用于存放源码包

Install 软件安装目录

Source 源码包解压目录

将openssh-4.6p1.tar.gz、openssl-0.9.8e.tar.gz、zlib-1.2.3.tar.tar四个文件放到compressed目录下
交叉编译 zlib

cd /EmbSSH/compressed/

tar xvf zlib-1.2.3.tar.tar -C ../source

cd ../source/zlib-1.2.3

./configure --prefix=/EmbSSH/install/zlib-1.2.3

修改Makefile中的如下信息

CC=arm-linux-gcc

AR=arm-linux-ar rc

CPP =arm-linux-gcc -E

LDSHARED=arm-linux-gcc
执行

make

make install
交叉编译openssl

cd /EmbSSH/compressed/

tar zxvf openssl-0.9.8e.tar.gz -C ../source

cd ../source/openssl-0.9.8e

./Configure --prefix=/EmbSSH/install/openssl-0.9.8e os/compiler:arm-linux-gcc
make

make install
交叉编译openssh

cd /EmbSSH/compressed

tar zxvf openssh-4.6p1.tar.gz C ../source

cd ../source/openssh-4.6p1

./configure --host=arm-linux --with-libs --with-zlib=/EmbSSH/install/zlib-1.2.3 --with-ssl-dir=/EmbSSH/install/openssl-0.9.8e --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar

打印出如下信息:

OpenSSH has been configured with the following options:

User binaries: /usr/local/bin

........

Linker flags: -L/EmbSSH/install/openssl-0.9.8e/lib

-L/EmbSSH/install/zlib-1.2.3/lib

Libraries: -lresolv -lcrypto -lutil -lz -lnsl -lcrypt
执行make,不需要执行make install

至此需要编译的文件已经完成。

4. 安装sshd到开发板
在板子/usr/local建立文件夹bin etc libexec sbin share

将/EmbSSH/source/openssh-4.6p1目录中编译好的目标文件

scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

复制到板子或镜像/usr/local/bin目录中(也可以放在/bin);

moduli ssh_config sshd_config复制到/usr/local/etc;

sftp-server ssh-keysign复制到/usr/local/libexec目录(也可以放在/usr/libexec);

sshd复制到/usr/local/sbin目录(也可以放在/sbin或/usr/sbin);
建立sshd用户

可以直接修改/etc/passwd、/etc/group文件

在passwd中加入

sshd::103:103::/var/run/sshd:/bin/sh

在group中加入

sshd:*:103:
执行

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

将生成的文件复制到/usr/local/etc目录中。
建立目录/var/empty
启动sshd服务

/usr/local/sbin/sshd(或/usr/sbin/sshd或/sbin/sshd)

此时就可以使用ssh客户端连接开发板了。
也可以将
mkdir -p /var/empty

/usr/local/sbin/sshd(或/usr/sbin/sshd或/sbin/sshd)
放置在/etc/init.d/rcS中,这样服务就能开机自动启动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: