本身拥有一块开发板,可是苦于上面没有ssh,比较不方便。正好趁这个机会,移植ssh。咱们使用的ssh是openssh。html
为了方便管理,建立有关的目录linux
mkdir ssh cd ssh mkdir compressed install source
下载并解压有关的源码:app
cd compressed
wget -c https://www.zlib.net/zlib-1.2.11.tar.gz wget -c https://www.openssl.org/source/openssl-0.9.8e.tar.gz wget -c http://mirrors.mit.edu/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz
#解压下载的包
tar -xf openssh-4.6p1.tar.gz -C ../source tar -xf openssl-0.9.8e.tar.gz -C ../source tar -xf zlib-1.2.11.tar.gz -C ../source
编译 zlibssh
cd ../source/zlib-1.2.11
使用如下脚本工具
OUTPUT_PATH=/home/schips/arm/mtd-utils/install ARM_GCC=arm-none-linux-gnueabi-gcc CC=${ARM_GCC} ./configure --prefix=${OUTPUT_PATH}/zlib-1.2.11 && make && make install
编译opensslui
cd ../openssl-0.9.8e/ # 红色部分同上,根据本身的需求进行修改 ./Configure --prefix=/home/xx/arm/ssh/install/openssl-0.9.8e os/compiler:arm-none-linux-gnueabi-gcc
make && make install
通常到了这里会出现下列问题,处理后从新 make && make install 便可:spa
(笔者建议使用 红色加粗的命令).net
编译和安装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 或 sudo mv /usr/bin/pod2man /usr/bin/pod2man_bak
编译opensshrest
红色部分依旧根据实际状况进行修改code
cd ../openssh-4.6p1/ ./configure --host=arm-none-linux-gnueabi \
--with-libs --with-zlib=/home/xx/arm/ssh/install/zlib-1.2.11 \
--with-ssl-dir=/home/xx/arm/ssh/install/openssl-0.9.8e \
--disable-etc-default-login \
CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
make
#注意:openssh不须要make install
若是出现如下某个报错,请注意zlib的install路径 和 OpenSSL的install路径 是否正确
configure配置openssh的时候出错:configure: error: *** zlib missing - please install first or check config.log ***
configure: error: *** Can't find recent OpenSSL libcrypto (see config.log for details)
新建如下目录
mkdir -p /usr/local/bin/ mkdir -p /usr/local/sbin/ mkdir -p /usr/local/etc/ mkdir -p /usr/local/libexec/ mkdir -p /var/run/ mkdir -p /var/empty/
拷贝:
从PC机上将如下文件拷贝到目标板Linux系统中
PC机 ssh/source/openssh-4.6p1/ 目录下的
生成Key文件
在PC机 ssh/source/openssh-4.6p1/ 目录下运行:
ssh-keygen -t rsa -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-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
将生成的 ssh_host_*_key这4个文件copy到目标板的 /usr/local/etc/目录下
修改目标板passwd文件
在/etc/passwd 中添加下面这一行 “ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ”
cp /etc/passwd /etc/passwd_bak echo "sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin" >> /etc/passwd
此后,只须要运行一次 /usr/local/sbin/sshd 此后便可使用远程登陆
若是开发板的 root 用户尚未密码,键入如下命令然输入两次密码来修改,不然其余设备没法链接:
passwd root
若是链接不上,请直接运行 /usr/local/sbin/sshd 查看是什么缘由
#! /bin/sh sshd=/usr/local/sbin/sshd test -x "$sshd" || exit 0 case "$1" in start) echo -n "Starting sshd daemon" start-stop-daemon --start --quiet --exec $sshd -b echo "." ;; stop) echo -n "Stopping sshd" start-stop-daemon --stop --quiet --exec $sshd echo "." ;; restart) echo -n "Stopping sshd" start-stop-daemon --stop --quiet --exec $sshd echo "." echo -n "Waiting for sshd to die off" for i in 1 2 3 ; do sleep 1 echo -n "." done echo "" echo -n "Starting sshd daemon" start-stop-daemon --start --quiet --exec $sshd -b echo "." ;; *) echo "Usage: /etc/init.d/sshd {start|stop|restart}" exit 1 esac exit 0