arm移植ssh,实现远程root登录和sftp登录 |
您所在的位置:网站首页 › ssh远程root登录 › arm移植ssh,实现远程root登录和sftp登录 |
主机:ubuntu16.04 64bit 目标板:mini2440 交叉编译工具:4.4.3 1. 下载需要的源码: mkdir -p ~/arm/fs ;mkdir -p ~/arm/source 下载zlib-1.2.3: wget -c http://www.zlib.net/fossils/zlib-1.2.3.tar.gz 下载openssl-0.9.8d: wget -c http://www.openssl.org/source/openssl-0.9.8d.tar.gz 下载openssh-4.6.tar.gz 上面三个源码打包下载链接:https://download.csdn.net/download/u012577474/11846054 在主机上建立工程目录: ./arm |-build – 安装目标目录 |-source – 源程序解压目录(将所有源码解压至此目录) |-tar – 源程序压缩文件目录 (1) 编译zlib: tar zxvf zlib-1.2.3.tar.gz -C . cd zlib-1.2.3/ ./configure --prefix=/root/arm/fs/zlib-1.2.3 修改Makefile: CC=gcc 改为: CROSS=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux- CC=$(CROSS)gcc LDSHARED=gcc 改为: LDSHARED= $(CROSS)gcc CPP=gcc -E 改为: CPP=$(CROSS)gcc -E AR=ar rc 改为: AR= $(CROSS)ar rc 开始编译: make make install (2) 编译openssl: tar zxvf openssl-0.9.8d.tar.gz cd openssl-0.9.8d/ ./configure --prefix=/root/arm/fs/openssl-0.9.8d os/compiler:/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc 开始编译: make make install 编译和安装 openssl 时出错,POD document had syntax errors: installing man1/smime.1 smime.pod around line 272: Expected text after =item, not a number smime.pod around line 276: Expected text after =item, not a number smime.pod around line 280: Expected text after =item, not a number smime.pod around line 285: Expected text after =item, not a number smime.pod around line 289: Expected text after =item, not a number POD document had syntax errors at /usr/bin/pod2man line 71. make: *** [install_docs] 错误 255 原因分析:这是由于 OpenSSL 1.0.1e 与 perl5.18 不兼容。 解决方法: 1、有人验证 安装 perl 5.16 可以兼容,安排低版本 perl 5.16 可以解决问题。 2、删除 pod2man 文件: sudo rm /usr/bin/pod2man 出现报错,configure: error: *** Can’t find recent OpenSSL libcrypto (see config.log for details): 这是缺少openssl-dev依赖的原因 解决方法: 安装openssl apt-get install libssl-dev (3) 编译openssh: tar zxvf openssh-4.6p1.tar.gz cd openssh-4.6/ ./configure --host=arm-linux --with-libs --with-zlib=/root/arm/fs/zlib-1.2.3 --with-ssl-dir=/root/arm/fs/openssl-0.9.8d --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar make ##不要make install configure配置openssh的时候出错:configure: error: *** zlib missing - please install first or check config.log *** 解决方法: 1、注意zlib的install路径 和 OpenSSL的install路径 是否正确 2、重新交叉编译zlib (4)目标板准备 确保目标板上有以下目录,若没有,则新建: $ mkdir -p /usr/local/bin $ mkdir -p /usr/local/etc $ mkdir -p /usr/local/libexec $ mkdir -p /var/run $ mkdir -p /var/empty/sshd 修改/var/empty目录权限 $ chmod 755 /var/empty (5)拷贝编译后的sshd相关程序文件到目标板 (1) 将 openssh-4.6p1目录下的 sshd 拷贝到 目标板的/usr/sbin目录下 (2) 再scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan 这7个文件到目标板/usr/local/bin目录下 (3) 将sftp-server ssh-keysign 拷贝到/usr/local/libexec目录下 (4) 然后将sshd_config,ssh_config 拷贝到/usr/local/etc目录下 (6)生成Key文件 在主机上生成key文件(生成较慢耐心等待): $ ssh-keygen -t rsa -f ssh_host_rsa_key -N "" $ ssh-keygen -t dsa -f ssh_host_dsa_key -N "" 会产生4个文件,要拷贝到目标板的/usr/local/etc目录下。 在目标板上生成key文件(生成较慢耐心等待): $ ssh-keygen -t rsa1 -f ssh_host_key -N "" 会产生2个文件,移动到/usr/local/etc目录下。 $ mv ./ssh_host* /usr/local/etc (7)修改key文件权限 要把前面生成的6个秘钥文件的权限都修改成700,因为必须所有者是root。 否则运行sshd会出现下面错误信息: (8) 添加用户: 将主机上 /etc/目下的 passwd, shadow, group 三个文件copy到目标板的 /etc目录下, 同时记得将passwd中的 /bin/bash 该为 /bin/sh 也可以删除掉不需要的一些用户。 首次使用目标开发板root用户没有设置密码,需执行passwd root指令设置密码。 如果不存在sshd用户,则: 在目标板的passwd中添加sshd用户: sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin 在shadow中也添加对应的项就行了: sshd:!:14069:0:99999:7::: (9)启动sshd 启动sshd,需要使用绝对地址: $ /usr/sbin/sshd 来看看sshd是否已启动: $ netstat -ntlp 可以看到服务已经被启动了。 (10)从远程主机登录目标板 1、查看目标板IP: 可以知道目标板当前IP是172.20.11.41 2、主机通过ssh远程登录目标板 $ ssh -v [email protected] 如下图,可以看到登录成功了: 在主机上ls查看目标板根目录。 在目标板上,ls查看根目录,可以看到和上面完全一致。 到此openssh4.6移植完成。 (11)通过SFTP客户端登录目标板 客户端软件:filezilla 平台:win7 打开站点管理器添加目标板账号(root的账号密码): 点击连接。连接成功,可以看到目标板下面的文件如下:
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |