移植Open SSH到DM368 IPNC中 linux arm ssh
我一直在寻找这样的一个ipnc模组:通用的38板,TI方案,并且开放了系统串口。可惜不是没有开发串口,就是非TI方案的,我觉得有这样的一个板子,可以做很多事情,一是这样的板子很便宜1080p dm368的才350左右,二是自己可以开发一些特定的程序在板子里运行。我觉得这样的需求应该是很多的,有时候 常规的ipc并不能满足需要。后来我问一家小板的厂家,没有串口你们怎么调试程序的。他们说不用串
我一直在寻找这样的一个ipnc模组:通用的38板,TI方案,并且开放了系统串口。
可惜不是没有开发串口,就是非TI方案的,我觉得有这样的一个板子,可以做很多事情,一是这样的板子很便宜1080p dm368的才350左右,二是自己可以开发一些特定的程序在板子里运行。我觉得这样的需求应该是很多的,有时候 常规的ipc并不能满足需要。
后来我问一家小板的厂家,没有串口你们怎么调试程序的。他们说不用串口,用telnet,通过网络调试。这么一说倒是提醒我了,干嘛用telnet,为什么不用ssh。
所以决定在我的ipnc中添加ssh,只是网络文件系统可能要增大六七兆的空间。
用开源的OpenSSH,还需要连个依赖库ssl和zlib
下载地址
openssh http://www.openssh.com/portable.html
openssl http://www.openssl.org/source
zlib http://www.zlib.net/
下载最新版本的好了,跟新比较快的。
1/将上述源码解压到一个文件夹下(随便一个文件,但注意,不能是在window上被linux共享的目录里,因为创建软连接的时候会失败)
mkdir -p /root/ssh/source
tar -xvzf ......
2/新建一个安装目录
mkdir -p /root/ssh/install
3/zlib
配置
./configure --prefix=/root/ssh/install/zlib
修改makefile,也就是设置交叉编译工具
将gcc 改成 arm_v5t_le-gcc arm_v5t_le-ar 等等,只要涉及到编译工具的地方都添加前缀就好了
然后
make
在然后
make install
4/ssl
配置
./Configure --prefix=/root/ssh/install/ssl os/compiler:arm-linux-gcc
然后
make
再然后
make install
5/ssh
zlib和ssl编译安装后就可以编译ssh了
配置
./configure --host=arm-linux --with-libs --with-zlib=/root/ssh/install/zlib --with-ssl-dir=/root/ssh/install/ssl --disable-etc-default-login CC=arm_v5t_le-gcc AR=arm_v5t_le-ar
然后
make
注意,这里就不要make install了,上述编译一般来说是不会出现错误的,如果有,请检查设置的目录是不是绝对目录,不要出现"."或者".."等
以上ssh就编译好了,下面需要将相应的文件复制到目标文件系统中,然后配置一些文件,ssh就可以使用了
1、在目标文件系统 /usr/local 中新建必要的文件加
cd usr/local
mkdir bin sbin etc libexec
cd var
mkdir -p /var/run
mkdir -p /var/empty/sshd
2、进入刚刚编译好的ssh源码中复制必要的文件
cd /root/ssh/source/ssh
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan target/usr/local/bin (注:其实只留下scp和ssh就好了,其他都可以不要,scp实现远程机与本机之间的文件复制,比较方便)
cp sshd /usr/local/sbin
cp moduli ssh_config sshd_config target/usr/local/etc
cp sftp-server ssh-keysign target/usr/local/libexec
3、进入target/usr/local/bin中执行下列命令
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 ""
并且将上述命令产生的所有文件复制到 target/usr/local/etc目录下
4、将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将passwd的所有后面的 /bin/bash 该为 /bin/sh
删除不需要的一些用户。(注意,必要要有密码的用户,一般留下有密码的root用户,其他的都删掉好了)
在target/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
至此,ssh就OK了
在目标板上运行ssh
/usr/local/sbin/sshd
会提示一个错误:
Could not load host key: /usr/local/etc/ssh_host_ecdsa_key
不要紧,忽略。ps命令一下,查看sshd是否在运行
测试:
在主机上
ssh root@192.168.1.227
几秒之后提示输入密码,输入正确的密码后就成功连接了!
[root@localhost ~]# ssh root@192.168.1.227
root@192.168.1.227's password:
Welcome to MontaVista(R) Linux(R) Professional Edition 5.0.0 (0702774).
#
上述红色标注的是arm中必要的文件,其他都可以不要,节省flash空间
更多推荐
所有评论(0)