arm开发板移植SSH记录

参考原文:https://blog.csdn.net/u013711616/article/details/53044918
修改了一些地方,供自己记录使用

1、下载源码

下载zlib: zlib-1.2.11.tar.gz http://www.zlib.net
下载ssl : openssl-1.0.2q.tar.gz http://www.openssl.org/source/
下载ssh : openssh-4.6p1.tar.gz http://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/

2、解压zlib: zlib-1.2.11.tar.gz,修改、编译

tar xvf zlib: zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure –prefix= /work/ssh/zlib-1.2.11

/work/ssh/lib是保存编译、安装生成的新文件的目录。更具自己的情况选择目录。

修改Makefile

19 CC=gcc,第19行改为

19 CC=arm-linux-gcc

30 LDSHARED=gcc -shared -Wl,-soname,libz.so.1,–version-script,zlib.map
31 CPP=gcc -E改为

30 LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
31 CPP=$arm-linux-gcc -E

39 AR=ar
40 ARFLAGS= rc

 39 AR=arm-linux-ar
 40 ARFLAGS= rc

可能是版本的原因有的是这样AR=ar rc ,就改为这样:

 AR=arm-linux-ar rc 

编译

make 
make install

解压 openssl-1.0.2q.tar.gz,编译

进入到 openssl-1.0.2q目录,执行

./Configure prefix= /work/ssh/openssl-1.0.2q os/compiler:arm-linux-gcc

注意这个不能在共享文件下编译不然会出如下错误
openssl No rule to make target ../include/openssl/bio.h', needed bycryptlib.o’. Stop.所以要解压到linux的非共享目录下。

make
make install

解压openssh-4.6p1.tar.gz,编译

进入到openssh-4.6p1,执行

./configure –host=arm-linux –with-libs –with-zlib=/work/ssh/zlib-1.2.11 –with-ssl-dir=/work/ssh/openssl-1.0.2q –disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar 
make

注意:这一步没有make install
以下内容都是复制的原文,添加了怎么设置ssh 用户root的密码

拷贝安装

注意一下文件要拷贝到特定文件下,如果你的开发板根文件系统中没有一下文件,那么需要你自己新建。

(1) 将 openssh-5.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下

(2) 再cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 到目标板/usr/local/bin目录下
cp sftp-server ssh-keysign 到/usr/local/libexec

(3) 在目标板下: mkdir -p /usr/local/etc/
然后将openssh下的sshd_config,ssh_config 拷贝到该目录下
mkdir -p /var/run; mkdir -p /var/empty/sshd
chmod 755 /var/empty

(4)在虚拟机openssh-4.6p1路径下执行一下操作:

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 “” 

将生成的 ssh_host_* 6个文件copy到目标板的 /usr/local/etc/目录下(含有.pub文件)
这里有很重要的一件事要做,在你的开发板中执行一下命令:这一步如果没做SSH移植就无法成功,该步骤困扰我很长时间。

 chmod 700 /usr/local/etc/*

如果你没进行上述操作就会出现大量的如下图的错误
在这里插入图片描述
(5) 添加用户:
修改目标板根文件系统/etc目录下的 passwd 和group文件,添加上sshd用户和组,步骤如下:

cd /etc 
vi passwd

//在文件末尾添加一下内容并保存退出:

sshd:*:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

vi group
//添加
sshd:*:74:

补充一点添加有密码的ssh用户,这个用户名要在系统中添加了的才行。

~# passwd root china
Changing password for root
New password: 

这样设置的密码是root的,ssh登录时就用root做用户名登录。
(6)修改sshd_config文件如下选项,其他按默认配置:
自己的板子要连接互联网,所以PermitEmptyPasswords、UsePrivilegeSeparation ,这两我没按照原文配置。

#HostKey for protocol version 1 
HostKey /usr/local/etc/ssh_host_key 
#HostKeys for protocol version 2  
HostKey /usr/local/etc/ssh_host_rsa_key 
HostKey /usr/local/etc/ssh_host_dsa_key

PermitRootLogin   yes   #――允许根用户登陆
PermitEmptyPasswords   yes   #――允许使用空密码,即不需要密码  
UsePrivilegeSeparation    no   #――把安全级别降低,因为不会连接互联网

#override default of no subsystems 
 Subsystem sftp /usr/local/libexec/sftp-server   #――指定sftp服务路径,否则将不能启动sftp服务,将不能进行文件的上传和下载

4.测试

在开发板上执行# /usr/sbin/sshd,要使用绝对路径才行。

设置系统上电自动启动SSHD
可以将/usr/sbin/sshd写入/etc/init.d/rcS中开机启动

以上就实现了SSH的移植,下面就可以使用SSH登陆开发板,也可以使用SSH client 进行文件传输。在这个过程中你也许会遇到SSH登陆缓慢的问题你可以尝试一下修改看是否能解决问题,对我来说一下方案没有效果。

1、关闭DNS反向解析
在linux中,默认就是开启了SSH的反向DNS解析,这个会消耗大量时间,因此需要关闭。

#vi /etc/ssh/sshd_config

UseDNS=no

在配置文件中,虽然UseDNS yes是被注释的,但默认开关就是yes

2、关闭SERVER上的GSS认证
在authentication gssapi-with-mic有很大的可能出现问题,因此关闭GSS认证可以提高ssh连接速度。

#vi /etc/ssh/sshd_config
GSSAPIAuthentication no

问题解决

用工具连接时出现Server refused to allocate pty提示时,进行如下操作

mknod -m 666 /dev/ptmx c 5 2    //如果ptmx存在就不需要操作ptmx了
chmod 666 /dev/ptmx
mkdir /dev/pts
#编辑/etc/fstab,加入:
none /dev/pts devpts gid=5,mode=620 0 0  
mount /dev/pts

感谢博主的分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值