开始参考http://blog.sina.com.cn/s/blog_7f2a9a390100xws4.html
原文如下:
1.下载源码包,地址如下:
opensshopenssl
zlib
2.交叉编译
创建工作目录:
#mkdir /work#cd /work
在/work目下面创建ssh目录
# mkdir /work/lib
# mkdir /work/ssh
# cd
# mkdir compressed install source
#mv tarpakgs/openssh-4.6p1.tar.gz
#mv tarpakgs/openssl-0.9.8e.tar.gz
#mv tarpakgs/zlib-1.2.3.tar.gz
解压安装包:
# cd /work/ssh/compressed/# tar zxvf zlib-1.2.3.tar.gz
# tar zxvf openssl-0.9.8e.tar.gz
# tar zxvf openssh-4.6p1.tar.gz
交叉编译 zlib:
# cd
# ./configure --prefix=/work/ssh/install/zlib-1.2.3
# vim Makefile
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar rc
CPP =arm-none-linux-gnueabi-gcc -E
LDSHARED=arm-none-linux-gnueabi-gcc
# make
# make install
交叉编译openssl
# cd
# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e
# make
# make install
# cd
#./configure --host=arm-none-linux-gnueabi
#make
注意:openssh不需要make install
3.操作目标板
3.1确保目标板上有以下目录,若没有,则新建:
/usr/local/bin/3.2从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /work/ssh/source/openssh-4.6p1/ 目录下的
scp
moduli ssh_config sshd_config拷贝到目标板 /usr/local/etc
sftp-server
sshd 拷贝到目标板 /usr/local/sbin/
3.3生成Key文件
在PC机 /work/ssh/source/openssh-4.6p1/ 目录下运行:
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 ""
将生成的 ssh_host_*_key这3个文件copy到目标板的 /usr/local/etc/目录下
3.4修改目标板passwd文件。
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
4.测试
在目标板上运行:#/usr/local/sbin/sshd
可以用ps命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
主机上:
#ssh root@192.168.0.34(开发板的ip)
然后输入开发板的root密码就就可以了。
//root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。
登录成功后如下图:
问题总结
sshd: /lib/libc.so.6: version `GLIBC_2.7' not found (required by sshd)
问题分析:说明你编译等时候指定等glibc和目标板所使用的不一致。
解决办法:配置openssh,即./configure时,使用对用等--host参数,如--host=arm-linux/arm-none-linux-gnueabi。
2.make openssl的时候,指定的prefix目录已经存在,无法创建。
问题分析:这是因为在prefix目录的时候,使用了相对路径,如../../install。
解决办法:openssl需要用指定绝对路径来安装,prefix参数应该如:--prefix=/work/ssh/install/openssl-1.0.0
3.使用arm-2007q3-51-arm-none-linux-gnueabi.bin的make编译ssh和gdbserver时出错:
/root/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
make: *** [example] 错误 1
问题解析:
解决办法:
可能一解决:查找/root/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc/lib目录,如果有libgcc_s.so.1,做一个链接:ln -s libgcc_s.so.1 libgcc_s.so,重新make,此问题可以解决。如果再出现以下问题:
4.用nfs从主机复制到目标板时出现:
cp: omitting directory '/etc/boa'
等错误。
问题分析:权限不够,或者目标板中等/usr/local/etc已经有文件。
解决办法:在cp命令后加-r参数,如:cp -r /etc/* /usr/local/etc/
5.运行sshd时出现:
Could not load host key: /usr/local/etc/ssh_host_dsa_key
Could not load host key: /usr/local/etc/ssh_host_ecdsa_key
问题解析:在/usr/local/etc目录中没有相应等key。
解决办法:按照操作步骤,运行:
生成ssh_host_das_key 和ssh_host_ecdas_key后复制到目标板/usr/local/etc/目录下。
6.从nfs复制key文件到usr/local/etc时出现:
cp: can't open 'ssh_host_dsa_key': Permission denied
问题分析:目标板复制权限不够。
解决办法:在主机中修改他们等权限为777,命令:chmod 777 *
7.Privilege separation user sshd does not exist
//需要在开发板的系统里adduser shhd
//或者在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
8.Permissions 0755 for '/usr/local/etc/ssh_host_dsa_key' are too open.
//则把目标板/usr/local/etc/下的ssh_host_*几个文件的权限改为700。如果出现权限不够问题,用su - root进入root用户再改。
命令:#chmod 700 ssh_host_*
9.Permission denied (publickey,password,keyboard-interactive).
//打开开发板/usr/local/sshd_config,将PermitRootLogin yes前的注释“#”号去掉。
10.configure配置openssh的时候出错:
configure: error: *** zlib missing - please install first or check config.log ***
问题分析:没有找到zlib。
问题解决:重新交叉编译zlib,再configure即可。
11.以下两个函数没找到:
/home/arm/ssh-omap/source/openssh-5.8p2/ssh-keygen.c:1410: undefined reference to `pkcs11_init'
/home/arm/ssh-omap/source/openssh-5.8p2/ssh-keygen.c:1493: undefined reference to `pkcs11_terminate'
问题解决:
打开ssh-keygen.c:vi ssh-keygen.c
屏蔽这1410和1493这两行函数。
另一篇:http://biancheng.dnbcw.info/solaris/242329.html
参考资料
*http://bbs.chinaunix.net/viewthread.php?tid=297711
*http://www.stor-age.com/software_zone/2007/0908/496749.shtml
简介
*下载软件包:
libgcc-3.4.6-sol8-sparc-local.gz
openssh-5.0p1-sol8-sparc-local.gz
openssl-0.9.8h-sol8-sparc-local.gz
zlib-1.2.3-sol8-sparc-local.gz
可以在http://www.sunfreeware.com/indexsparc8.html中找到
* 安装
gunzip *.gz
pkgadd -d openssh-5.0p1-sol8-sparc-local
pkgadd -d openssl-0.9.8h-sol8-sparc-local
pkgadd -d zlib-1.2.3-sol8-sparc-local
pkgadd -d libgcc-3.4.6-sol8-sparc-local
以上软件包的默认安装路径是/usr/local,缺省的SSL文件在/usr/local/ssl里面,你需要设置/usr/local/lib和/usr/local/ssl/lib到LD_LIBRARY_PATH里面。你的ssh是在/usr/local/bin里sshd是在/usr/local/sbin里,确信你的PATH里包含了这2个变量。
* 设置sshd用户和/var/empty目录
mkdir /var/empty
chown root:sys /var/empty
chmod 755 /var/empty
groupadd sshd
useradd -g sshd -d /var/empty -s /bin/false sshd
* tcp_wrappers设置
参考文档: README.tcpwrappers
编辑/etc/hosts.deny,修改为sshd:ALL
编辑/etc/hosts.allow,修改为sshd:192.168.1.111
192.168.1.111是我的NOTEBOOK的地址
* 设置ssh和sshd
参考文档: README.openssl INSTALL.openssl README.openssh INSTALL.openssh
每个想通信的不同的ssh客户端,都需要有一个sshd的进程运行。 把/usr/local/bin 和/usr/local/sbin加到你的PATH里。
ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
设置启动文件
# vi /etc/init.d/sshd
"/etc/init.d/sshd" 16 lines, 229 characters
#!/bin/sh
case $1 in
'start')
/usr/local/sbin/sshd && echo " Star tsshd ok!"
;;
'stop')
if [ "${pid}" != "" ]
then
pkill sshd && echo " kill sshd ok!"
fi
;;
*)
echo "usage: /etc/init.d/sshd {start|stop}"
;;
esac
chmod +x /etc/init.d/sshd
设置开机自动启动: ln -s /etc/init.d/sshd /etc/rc2.d/S98sshd
启动:/etc/init.d/sshd start
“Solaris8下OpenSSH的安装和设置”的更多相关文章 》
相关资料:
在做的过程中解决的问题
1、开始zlib,ssl和ssh都用了最新版本。但ssh的最新版本configure时总是提示有个zlib相关的.h找不到。后来这三个版本都用了和原文一样的版本,ssl用的0.9.8zg,稍有不同
2、ssh 做configure时候,开始总是找不到zlib的路径。后来发现我在路径里用了“~”符号,改成了绝对路径就可以了。ssh的不知道为啥不支持“~”。
3、运行sshd,开始总是提示ssh_host_key找不到,这个安装上述文章里根本就没生成,我也不知怎么生成,后来看到http://biancheng.dnbcw.info/solaris/242329.html,里面有一句ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N "",生成出来加上就好了。
4、文件传输开始不行, 后来看上面文章里提到了sftp-server路径问题,修改后重启sshd不行,重启了板子才好。