OpenWrt/ssh

OpenWrt/ssh

ssh-keygen

OpenWrt 默认只带了个 busybox 的 ssh 客户端。没有 ssh-keygen。需要自行安装完整版 ssh client 里的 utils 包才有 ssh-keygen:

opkg update
opkg install openssh-client openssh-client-utils

ssh-copy-id

OpenWrt 没有 ssh-copy-id, 可以自己写个脚本实现基本的 ssh-copy-id 功能。

Dropbear

ssh client

OpenWRT 内置的 dropbear ssh,其公钥文件格式与 OpenSSH 相同,但私钥文件格式与 OpenSSH 不同(Dropbear 使用二进制格式的私钥文件)。

dropbear 的 ssh client 默认使用 ~/.ssh/id_dropbear 文件作为登陆时用于验证的私钥。

使用 dropbearkey 生成 dropbear 格式的公钥 / 私钥对。

转换 Dropbear OpenSSH 格式的私钥:(需要在 Debian / Ubuntu Linux 系统里操作)

apt-get install dropbear
# openssh => dropbear key
/usr/lib/dropbear/dropbearconvert openssh dropbear id_rsa id_dropbear
# dropbear => oppenssh key
/usr/lib/dropbear/dropbearconvert dropbear openssh id_dropbear id_rsa

ssh server

SSH public key authorization

OpenWRT 内置的是 dropbear ssh server,其公钥登录文件路径是 /etc/dropbear/authorized_keys。而 OpenSSH Server 默认的公钥路径是 ~/.ssh/authorized_keys。所以从其他机器 ssh-copy-id 到 OpenWrt 设备后也无法公钥登录 OpenWrt。

解决方法是(如果存在该文件的话)删掉OpenWRT 自带的 /etc/dropbear/authorized_keys,然后做个符号链接指向 /root/.ssh/authorized_keys

rm /etc/dropbear/authorized_keys
ln -s /root/.ssh/authorized_keys  /etc/dropbear/authorized_keys

sftp

OpenWrt 默认安装的 ssh 只支持 scp 传输文件。如果需要 sftp,安装 openssh-sftp-server 包

opkg install openssh-sftp-server

Last update: 2020-09-08 07:03:53 UTC