随身Wi-Fi移植dropbear开启ssh

随身Wi-Fi移植dropbear开启ssh

随身Wi-Fi移植dropbear开启ssh

前言

最近入手某速R106随身Wi-Fi一个,机器是UDX710芯片,arm64架构,嵌入式linux系统,网上有去云控,开启telnet的方法,还是很有可玩性的。

折腾思路

去云控期间telnet是开启状态,然后机器会重启,想要登录系统就需要中断重启,保持telnet开启。我的方法是软件连接到机器的瞬间马上关掉,拼了几次手速果然成功了,然后就可以telnet登录了,下面就可以开启折腾之路了。

设置telnet开机自启

经过上面的操作,现在已经可以用telnet登录了,我这里用SecureCRT软件

图片[1]-R106随身Wi-Fi移植dropbear开启ssh
图片[2]-R106随身Wi-Fi移植dropbear开启ssh

系统默认会把根目录挂载为只读,这就导致修改文件无法保存,需要先重新挂载为读写,用mount命令可以看到挂载信息

sh-4.4# mount
ubi0:system on / type ubifs (ro,relatime,ubi=0,vol=19)
devtmpfs on /dev type devtmpfs (rw,relatime,size=99536k,nr_inodes=24884,mode=755)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=64k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
/dev/ubi0_userdata on /mnt/userdata type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=23)
/dev/ubi0_prodnv on /etc/productinfo type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=4)
/dev/ubi0_m_data on /m_data type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=21)
/dev/ubi0_m_webui on /m_webui type ubifs (ro,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=22)
/dev/ubi0_userdata on /mnt/data type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=23)
/dev/ubi0_userdata on /home type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=23)
/dev/ubi0_userdata on /var type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=23)
tmpfs on /var/volatile type tmpfs (rw,relatime)
/dev/ubi0_userdata on /cache type ubifs (rw,nosuid,nodev,noatime,compr=lzo,ubi=0,vol=23)

用mount -o remount,rw /命令重新挂载就可以了,这样只是临时挂载,需要再修改/etc/fstab文件保存挂载信息

# stock fstab - you probably want to override this with a machine specific one

/dev/root            /                    auto       ro              1  0
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0

# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0

/dev/ubi0_userdata    /mnt/userdata    ubifs    noatime,nosuid,nodev,compr=lzo          wait,encryptable=footer
/dev/ubi0_prodnv    /etc/productinfo    ubifs    noatime,nosuid,nodev,compr=lzo          wait,encryptable=footer
/dev/ubi0_m_data    /m_data    ubifs    noatime,nosuid,nodev,compr=lzo          wait,encryptable=footer
/dev/ubi0_m_webui    /m_webui    ubifs    ro,noatime,nosuid,nodev,compr=lzo          wait,encryptable=footer
/dev/mmcblk0p1    /mnt/media    auto    defaults    0   0
/mnt/userdata/data    /mnt/data    none         rw,bind     0   0
/mnt/userdata/home    /home    none         rw,bind     0   0
/mnt/userdata/var    /var    none         rw,bind     0   0
tmpfs                /var/volatile        tmpfs      defaults              0  0
/mnt/userdata/cache    /cache    none         rw,bind     0   0

把第3行ro改成defaults

开机自启的脚本在/etc/init.d/hostname.sh里面,在最后面加一条telnetd -l /bin/sh就好了

vi /etc/init.d/hostname.sh

#!/bin/sh
### BEGIN INIT INFO
# Provides:          hostname
# Required-Start:
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Set hostname based on /etc/hostname
### END INIT INFO
HOSTNAME=$(/bin/hostname)

hostname -b -F /etc/hostname 2> /dev/null
if [ $? -eq 0 ]; then
        exit
fi

# Busybox hostname doesn't support -b so we need implement it on our own
if [ -f /etc/hostname ];then
        hostname `cat /etc/hostname`
elif [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" -o ! -z "`echo $HOSTNAME | sed -n '/^[0-9]*\.[0-9].*/p'`" ] ; then
        hostname localhost
fi

/home/root/r106/start.sh &
telnetd -l /bin/sh 

如果操作没有问题,现在重启机器后telnet也会保持开启了。

移植dropbear开启ssh

开启ssh可以参考网上的案例,我这里提供编译好的文件

至于怎么把文件传到机器上去,我这里用的比较笨的方法,在电脑上搭个文件服务器,用wget命令下载,有懂的大神可以交流一下更方便的办法。

下载好文件后解压出来得到usr文件夹,把usr/bin和usr/sbin里面的文件copy到对应的目录,再生成ssh的密钥文件

cd /etc
mkdir dropbear
cd dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key

创建启动脚本

/usr/sbin/dropdear_start.sh

#!/bin/sh
sleep 10
cd /usr/sbin
./dropbear 
~
~
- /usr/sbin/dropdear_start.sh 1/4 25%

在/etc/init.d/hostname.sh添加一行/usr/sbin/dropdear_start.sh

设置root账号密码

sh-4.4# passwd root
Changing password for root
New password: 
Retype password: 
passwd: password for root changed by root
sh-4.4# 

到这里已经可以ssh登录了。

总结

这是小白玩家的折腾经验,供大家参考,如果有幸让你看到这篇文章,欢迎留言交流。

参考资料:

向linux嵌入式ARM板移植dropbear

arm系统的sshd server——dropbear及frp内网穿透

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 共10条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
            • yinhuihe的头像-果城虾米钻石会员yinhuihe等级-LV6-果城虾米作者0
      • yinhuihe的头像-果城虾米钻石会员yinhuihe等级-LV6-果城虾米作者0
      • yinhuihe的头像-果城虾米钻石会员yinhuihe等级-LV6-果城虾米作者0