硬件环境:Ubuntu虚拟机、AM335X开发板、开发板通过电脑网口直连
一、获取源码
版本:zlib-1.2.13,openssl-1.0.0j,openssh-6.0p1
#openssl版本要选正确,与开发板系统移植,否则sshd不能正常开机启动
zlib:
https://www.zlib.net/zlib-1.2.13.tar.gz
openssl:
https://www.openssl.org/source/old/1.0.0/openssl-1.0.0j.tar.gz
将下载好的压缩包放在虚拟机根目录
二、交叉编译
交叉编译zlib
tar zxvf zlib-1.2.13.tar.gz
cd /zlib-1.2.13
./configure --prefix=/home/forlinx/zlib-1.2.13
#修改Makefile中的某些变量值,指定自己的交叉编译工具
CC=arm-arago-linux-gnueabi-gcc
CPP=arm-arago-linux-gnueabi-g++
AR=arm-arago-linux-gnueabi-ar
LDSHARED=arm-arago-linux-gnueabi-gcc
保存退出执行
make
make install
交叉编译openssl
tar zxvf openssl-1.0.0j.tar.gz
cd /openssl-1.0.0j
./config --prefix=/home/forlinx/openssl-1.0.0j os/compiler:arm-arago-linux-gnueabi-gcc
make
make install
交叉编译openssh
tar zxvf openssh-6.0p1.tar.gz
cd /openssh-6.0p1
./configure --host=arm-arago-linux-gnueabi --with-libs --with-zlib=/home/forlinx/zlib-1.2.13/ --with-ssl-dir=/home/forlinx/openssl-1.0.0j --disable-etc-default-login CC=arm-arago-linux-gnueabi-gcc AR=arm-arago-linux-gnueabi-ar
make
注:不要make install
生成sshd、sftp-server、sshd_config等文件
建立密匙
在openssh-6.0p1目录下,用ssh-keygen工具建立密钥
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-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
生成了8个密匙文件
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_key
ssh_host_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub
ssh_host_ecdsa _key
ssh_host_ecdsa _key.pub
三、开发板移植
建目录
mkdir -p /usr/local/etc
mkdir -p /var/run /var/empty/sshd
#并设定权限
chmod 755 /var/empty
复制文件
sshd和sftp-server复制到开发板的/sbin/目录下
生成的8个密钥文件和sshd_config复制到/usr/local/etc/目录下
修改权限
进入/usr/local/etc/目录下,修改权限:
chmod 0644 *
chmod 0600 ssh_host_dsa_key ssh_host_key ssh_host_rsa_key ssh_host_ecdsa _key
修改文件
修改/etc/目录下的passwd和group文件,添加sshd用户和组
在passwd最后一行添加sshd:*:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
在group最后一行添加sshd:*:74:
修改/usr/local/etc/目录下的sshd_config
PermitRootLogin yes―――――允许根用户登陆
PermitEmptyPasswords yes――――允许使用空密码
UsePrivilegeSeparation no――――把安全级别降低,因为不会连接互联网
修改sftp-server的存放路径为 /sbin/sftp-server
四、系统运行
/sbin/sshd
查看sshd版本
/sbin/sshd -v
OpenSSH_6.0p1, OpenSSL 1.0.0j 10 May 2012
五、添加自启动脚本
新建S99sshd.sh
/etc/init.d/下新建S99sshd.sh,名字需要以S+两位数字开头,SNNxx.sh
touch S99sshd.sh
格式更改为UNIX
#! /bin/sh
DESC="sshd"
NAME=sshd
DAEMON=/sbin/$NAME
sshd=/sbin/sshd
test -x "$DAEMON" || exit 0
case "$1" in
start)
echo -n "Starting $DESC:"
# /sbin/start-stop-daemon -S -x $sshd > /dev/null
/sbin/start-stop-daemon --start --quiet --exec $DAEMON -b
echo "done."
;;
stop)
echo -n "Stopping $DESC:"
# /sbin/start-stop-daemon -K -x $sshd > /dev/null
/sbin/start-stop-daemon --stop --quiet --pidfile /var/run/sshd.pid
echo "done."
;;
restart)
$0 stop
echo -n "Waiting for $DESC to die off"
for i in 1 2 3 ;
do
sleep 1
echo -n "."
done
echo ""
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
创建软连接:
ln -s /etc/init.d/S99sshd /etc/rc3.d/S30sshd
ln -s /etc/init.d/S99sshd /etc/rc5.d/S30sshd
可实现开机自启动脚本
查看启动过程:
sshd服务正常启动不报错
查看任务:
ps命令,查看sshd已正常启动 ,可通过客户端进行ssh连接
参考
openssh编译安装到ARM嵌入式系统中_路边闲人2的博客-CSDN博客https://blog.csdn.net/v6543210/article/details/83420034