SSH的移植与使用

SSH可以从buildroot获得:

# cd buildroot-2020.05/
# ARCH=arm make menuconfig

# cp .config ./configs/ssd20x_defconfig -f
# make BR2_JLEVEL=4
# cp ./output/images/rootfs.tar ../project/image/rootfs/rootfs.tar -f
# cd ../project/image/rootfs
# rm rootfs/* -rf
# tar -xvf rootfs.tar -C ./rootfs/
# tar -cvf rootfs.tar.gz ./rootfs
# cd ../../../

重新编译固件并更新rootfs:

# ./Release_to_customer.sh -f nand -p ssd201

系统启动后,发现ssh没有自启动:

# ps | grep ssh

手动启动失败:

# /etc/init.d/S50sshd start

修改/var/empty的权限:

# chown root:root /var/empty
# /etc/init.d/S50sshd start

设置一下root的账号密码:

# passwd root

开放root登陆权限:

# vi /etc/ssh/sshd_config

重新开启sshd:

# /etc/init.d/S50sshd restart    

验证:

成功登陆后,发现/dev/的一些设备节点不见了:

# ls /dev/mi*

经过检查,是重复执行了/etc/profile的”mount -t tmpfs mdev /dev”导致,因此,我把不希望重复执行的动作放到/etc/init.d/rcS中:

# vi /etc/profile

# vi /etc/init.d/rcS

这样修改后,通过ssh登陆,设备节点还是正常存在:

在SDK中完成以上修改。
首先是profile及rcS相关:

# vi project/image/configs/i2m/rootfs.mk

接着是/var/empty及sshd_config相关:

# vi project/image/configs/i2m/rootfs.mk
 + sed -i 's/\#PermitRootLogin prohibit-password/PermitRootLogin yes/' $(OUTPUTDIR)/rootfs/etc/ssh/sshd_config

# cp project/image/output/rootfs/etc/init.d/S50sshd  project/image/rootfs_add_files/etc/init.d/
# vi project/image/rootfs_add_files/etc/init.d/S50sshd
+ chown root:root /var/empty

最后是默认的账号密码,相关文件是/etc/shadow和/etc/passwd,从已经配置好密码的开发板拷贝:

# ls -l project/image/rootfs_add_files/etc/shadow*
# ls -l project/image/rootfs_add_files/etc/passwd*

重新编译固件并更新rootfs:

# ./Release_to_customer.sh -f nand -p ssd201

系统启动后,直接使用root(密码为123456)登陆成功:

我把修改好的相关文件拷贝到V30/about_2D07/ssh/下。

文档更新时间: 2021-08-17 14:45   作者:Aeeditor