完全从 SD 卡运行 Dropbear SSH 服务器,因为文件系统是只读的

物联网 手臂
2021-06-01 06:24:21

我想利用嵌入式设备上的特定二进制文件检查 IP 摄像机的第一部分由于此二进制文件不会在嵌入式设备外部执行,因此我将对其进行远程检查。它有一个用于存储图片和视频的 SD 卡插槽。我为此平台静态交叉编译了 dropbear 并成功执行了它。

为了让我的主机通过 ssh 进入目标设备,我必须将 id_rsa 密钥添加到设备的 ~/.ssh/authorized_keys 中。由于 root 安装完全只读

/mnt/disc1/dropbear_armv5 # touch ~/.ssh
touch: /root/.ssh: Read-only file system

我想找到一种方法来在别处指定密钥的位置或在不使用任何密钥的情况下执行它。知道有人实现这一目标的方法吗?如果我误解了做这个帮助的原则,我也将不胜感激。

在目标上

/mnt/disc1/dropbear_armv5 # ./dropbear_static -r dropbear_dss_host_key -r   dropbear_rsa_host_key -B -E
/mnt/disc1/dropbear_armv5 # [27893] Jan 31 22:09:57 Running in background
[28019] Jan 31 22:10:28 Child connection from 192.168.12.1:47398
[28019] Jan 31 22:10:29 Login attempt for nonexistent user from 192.168.12.1:47398
[28019] Jan 31 22:10:29 Login attempt for nonexistent user from 192.168.12.1:47398
[28019] Jan 31 22:10:32 Exit before auth: Exited normally

在主机上

# ssh -i ip_cam_rsa root@192.168.12.176                         :(
root@192.168.12.176's password: 

Permission denied, please try again.
1个回答

Dropbear~/.ssh/authorized_keys在其源代码中对位置进行编码,其中~是从用户数据库中读取的目标用户的主目录。如果无法更改用户数据库,也无法将主目录设为可读写,则需要修改源代码。

您可以通过在其上安装不同的文件系统来使主目录可读写。这取决于设备上可用的工具。例如,也许您可​​以安排挂载一个内存文件系统:

mount -t tmpfs root /root
cp -Rp /somewhere/writable/root/.ssh /root/
dropbear

或者你可以做一个绑定安装

mount --bind /somewhere/writable/root /root
dropbear