博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CalmArrow

【打好基础】全力以赴,顺其自然【每天进步一点点】
  piaoxiang.cublog.cn

关于作者
姓名:CalmArrow(lqm)
职业:硕士在读
位置:山东济南
研究:嵌入式系统设计
联系:calmarrow@gmail.com

信仰:
    1、永远保持积极向上(积极的心态,积极的思考,积极的行动),享受生活给予的一切!
    2、做正确的事,正确的做事;用心去做,做到最好!
    3、如果你觉得不幸福,那么请你把幸福的门槛降低一些,不要把幸福拒之门外。。。

方向:
    在嵌入式系统设计中感兴趣的方向有:ARM、Linux、网络通信

目标:
    软硬结合,打好基础,提高学习能力,完善知识体系,建立核心优势。

方法:
    理论与实践相结合
    深度与广度相结合
    理解与记忆相结合

说明:
    本Blog仅供学习之用,转载文章如涉及版权,请通知。原创作品如转载,请注明出处。
|| << >> ||
我的分类


SSH系列1: OpenSSH移植
    SSH使用公钥密码学进行端到端通信的加密,并且相当容易使用和部署。我现在移植的是openssh,参考的文章主要是:http://blog.chinaunix.net/u1/43047/showart_371372.html。这篇文章描述非常详细,只是在编译成功之后,我认为好多部分是没有必要的。所以结合上面文章和《构建嵌入式Linux系统》来总结一下。
 
(1)下载
 

openssh-4.6p1.tar.gz     http://www.openssh.com/portable.html
openssl-0.9.8e.tar.gz    http:
//www.openssl.org/source
zlib-1.2.3.tar.gz        http:
//www.zlib.net/

 
(2)编译
 
    赞一句,该作者的处理方式非常好,和《构建嵌入式Linux系统》上一样优秀。主要思想就是压缩包在单独目录内,源码包和编译在一个目录内,安装目标在一个目录内。这样就省却了很多麻烦。
 
    ·编译zlib
 

[root@lqm zlib-1.2.3]# ./configure --prefix=/home/armlinux/fs/utilities/ssh/install/zlib-1.2.3

 

--- Makefile.orig 2008-03-24 14:44:48.000000000 +0800
+++ Makefile 2008-03-24 14:45:33.000000000 +0800
@@ -16,7 +16,8 @@
 # To install in $HOME instead of /usr/local, use:
 # make install prefix=$HOME

-CC=gcc
+CROSS=/usr/local/arm/3.4.1/bin/arm-linux-
+CC=$(CROSS)gcc

 CFLAGS=-O3 -DUSE_MMAP
 #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
@@ -25,15 +26,15 @@
 # -Wstrict-prototypes -Wmissing-prototypes

 LDFLAGS=-L. libz.a
-LDSHARED=gcc
-CPP=gcc -E
+LDSHARED=$(CROSS)gcc
+CPP=$(CROSS)gcc -E

 LIBS=libz.a
 SHAREDLIB=libz.so
 SHAREDLIBV=libz.so.1.2.3
 SHAREDLIBM=libz.so.1

-AR=ar rc
+AR=$(CROSS)ar rc
 RANLIB=ranlib
 TAR=tar
 SHELL=/bin/sh

 
    然后make; make install
 
    ·编译openssl
 

[root@lqm openssl-0.9.8e]# ./Configure --prefix=/home/armlinux/fs/utilities/ssh/install/openssl-0.9.8e os/compiler:/usr/local/arm/3.4.1/bin/arm-linux-gcc

 
    然后make; make install
 
    ·编译openssh
 

[root@lqm openssh-4.6p1]# ./configure --host=arm-linux --with-libs --with-zlib=/home/armlinux/fs/utilities/ssh/install/zlib-1.2.3 --with-ssl-dir=/home/armlinux/fs/utilities/ssh/install/openssl-0.9.8e --disable-etc-default-login CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc AR=/usr/local/arm/3.4.1/bin/arm-linux-ar

 
    配置完成,然后make,主要不要安装。
 
    ·首先把sshd复制到目标板的根文件系统的/usr/sbin,提前进行strip处理(约1.4M,比较大)。
 
    其次,需要建立文件夹/usr/local/etc/。然后把openssh目录下的sshd_config拷贝到该文件夹下面。否则出现错误:
 

/usr/local/etc/sshd_config: No such file or directory

 
    ·再次,在主机上产生密钥。按照《构建嵌入式Linux系统》的做法,会出现问题:
 

Could not load host key: /usr/local/etc/ssh_host_rsa_key
Could not load host key: /usr/local/etc/ssh_host_dsa_key

 
    所以,修改的方案为:
 

[root@lqm nfs]# ssh-keygen -t rsa1 -f ssh_host_key -N ""
[root@lqm nfs]# ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
[root@lqm nfs]# ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

 
    放到/usr/local/etc中。
 
    ·建立目录/var/run /var/empty/sshd,并设定权限chmod 755 /var/empty
 
    ·增加sshd用户。
 
    这个我是从host上拷贝,然后保留必要的用户,得到的。这样不会出问题。
 
    ·启动时,应该使用绝对路径。
 
    这样就可以正常启动了。只不过我在测试的时候,发现连接速度没有在host快。相对来说,这个sshd占用空间也大了很多,应该可以寻求替代方案。

回目录 嵌入式系统设计专题: 网络服务功能

发表于: 2008-03-24,修改于: 2008-03-24 15:03,已浏览574次,有评论0条 推荐 投诉


网友评论
网友: piaoxiang 时间:2008-03-24 17:47:48 IP地址:122.4.33.★
dropbear问题:
另一种密钥形式生成方法-dropbearkey -t dss -f dropbear_dss_host_key
用dropbearconvert来转换openssh的key也可以,方法如下:
dropbearconvert openssh dropbear ssh_host_rsa_key dropbear_rsa_host_key,注意放到对应的目录中即可。

网友: piaoxiang 时间:2008-04-16 15:50:09 IP地址:122.4.33.★
Usage: dropbear [options]
Options are:
-b bannerfile   Display the contents of bannerfile before user login
                (default: none)
-d dsskeyfile   Use dsskeyfile for the dss host key
                (default: /etc/dropbear/dropbear_dss_host_key)
-r rsakeyfile   Use rsakeyfile for the rsa host key
                (default: /etc/dropbear/dropbear_rsa_host_key)
-F              Don't fork into background
-E              Log to stderr rather than syslog
-m              Don't display the motd on login
-w              Disallow root logins
-s              Disable password logins
-g              Disable password logins for root
-j              Disable local port forwarding
-k              Disable remote port forwarding
-a              Allow connections to forwarded ports from any host
-p [address:]port
                Listen on specified tcp port (and optionally address),
                up to 10 can be specified
                (default port is 22 if none specified)
-P PidFile      Create pid file PidFile
                (default /var/run/dropbear.pid)
-i              Start for inetd
-W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)

网友: piaoxiang 时间:2008-04-16 15:52:58 IP地址:122.4.33.★
dropbear也可以有xinetd来启动,不过我测试的时候,如果有xinetd来启动,则认证速度非常慢。反而是独立启动要好一些。xinetd启动的配置如下:
service ssh
{
       socket_type     = stream
       user            = root 
       wait            = no
       protocol        = tcp 
       port            = 22
       instances       = 5
       per_source      = 4
       server          =/usr/sbin/dropbear
       server_args     = -i
       disable         = no
       log_on_success += DURATION USERID
       log_on_failure += USERID
}

网友: 本站网友 时间:2008-05-07 21:50:48 IP地址:61.141.191.★
我有一个问题,SSH相当于给了用户一个shell,那么如果某些用户想看一些系统内部的东西,岂不是也可以了?如何设置,来限制用户只能运行厂家给定的那几个命令呢?

网友: bluecolour 时间:2008-09-01 16:46:16 IP地址:59.40.28.★
是不是实现需要SSL?才能运行?我交叉了dropbear,configure不过,就disable-zlib 然后过了。make成功,但在target #dropbear 时,ps 里找不到。
#dropbear --help 是可以在target上运行的。 我的email是bluecoloursz@gmail.com, 谢谢你如果可以帮帮我。

 发表评论