译器arm-linux-gcc和arm-none-linux-gnueabi-gcc成功。
步骤: 1.下载源码包,地址如下: opensshopenssl zlib 2.交叉编译 创建工作目录: #mkdir /work#cd /work 在/work目下面创建ssh目录 # mkdir /work/lib
解压安装包: # 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: # make 交叉编译openssl # make # cd #./configure --host=arm-none-linux-gnueabi #make 注意:openssh不需要make install 3.操作目标板 3.1确保目标板上有以下目录,若没有,则新建: /usr/local/bin//usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
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文件 将生成的 ssh_host_*_key这3个文件copy到目标板的 /usr/local/etc/目录下
4.测试 在目标板上运行:#/usr/local/sbin/sshd 可以用ps命令查看sshd是否在工作 如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接! OK!不出意外的话可以成功, 主机上: #ssh root@192.168.0.34(开发板的ip) 然后输入开发板的root密码就就可以了。 //root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。 登录成功后如下图: putty登录
linux主机登录
问题总结 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 问题解析: cannot find -lgcc_s,即没有发现-libgcc_s.so。
解决办法: 可能一解决:查找/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,此问题可以解决。如果再出现以下问题: 同理,其他的问题,也在/arm-none-linux-gnueabi/libc/lib目录下,
问题:cannot find /lib/libc.so.6 inside,解决:ln -s libc-2.5.so libc.so.6
问题:cannot find /lib/ld-linux.so.3
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这两行函数。 12.开启sshd后,没有找到sftp-server服务。如DS-5软件在连接时就出现以下错误,虽然还可以用终端,不过不能传输文件,还是很不爽的:
Failed to connect SFTP subsystem: Remote host may not have sftp-server installed : java.io.IOException: inputstream is closed
问题分析:明显的,这是没有找到sftp子服务。
问题解决:打开/usr/local/etc/sshd_config,找到这么一行:
Subsystem sftp /usr/libexec/sftp-server
看出问题了吧?配置文件中指明的sftp子服务并不是我们放的目录,所以修改为:
Subsystem sftp /usr/local/libexec/sftp-server
然后kill掉sshd,再启动就可以用sftp-server了。
|
|
来自: SamBookshelf > 《ssh》