openwrt /Dropbear 开启sftp完整记录
openwrt一般自带的ssh服务器 是dropbear ,而不是其他linux产用的openssh。dropbear 更加轻量化,更适合嵌入式设备。但是dropbear的文件传输只支持scp而不支持sftp。
但是某些适合,scp协议无法替代sftp。所以还是要处理一下。
一般情况下,直接安装 openssh-sftp-server 后 dropbear就可以支持sftp但是有时候不生效。
为了节省时间去检查排错,有两个方案 1、使用rclone serve 或者sftpgo直接搞定sftp 2使用openssh替换掉dropbear
2023 09 12 更新,硬盘不紧张的话 建议固件编译的时候就 使用openssh
#使用rclone
#安装rclone
opkg仓库安装
plaintext
opkg install rclone
或者手动安装,注意选择你的cpu架构
plaintext
rm -rf rclone* && wget -c https://ghproxy.com/https://github.com/rclone/rclone/releases/download/v1.62.2/rclone-v1.62.2-linux-amd64.zip
unzip rclone*.zip
cp rclone-v1.62.2-linux-amd64/rclone /usr/bin/ && chmod +x /usr/bin/rclone & rm -rf rclone*
#配置本地储存节点
plaintext
rclone config --config /etc/rclone/rclone.conf
添加一个本地储存 ,或者直接在rclone.conf文件添加
plaintext
[localhost]
type = local
#搭建服务
编辑 /etc/rc.local 在exit 0前面 添加一行,或者路由器界面中 系统> 启动项> 本地其中脚本中输入
plaintext
rclone serve sftp localhost:/ --addr :1022 --user 用户名 --pass 密码 --dir-cache-time 10s --config /etc/rclone/rclone.conf &
rclone serve ftp localhost:/ --addr :1021 --user 用户名 --pass 密码 --dir-cache-time 10s --config /etc/rclone/rclone.conf &
rclone serve webdav localhost:/ --addr :1023 --user 用户名 --pass 密码 --dir-cache-time 10s --config /etc/rclone/rclone.conf &
上面的命令,没一行对应一个服务协议,选择你需要的即可。一般局域网内没必要sftp,ftp性能更好
重启路由器即可,或者 手动运行一次 上面命令。
#使用openssh
#首先给root一个设置密码
过程略 sd
#修改dropbear端口
plaintext
uci set dropbear.@dropbear[0].Port=2222
uci commit dropbear
/etc/init.d/dropbear restart
然后客户端重新连接 ssh [email protected] -p 2222
这样 dropbear 就在2222 临时提供 ssh和scp协议
#安装openssh 和sftp
plaintext
rm /etc/ssh/sshd_config #如果有这个文件最好删掉 重新配置
opkg update
opkg install openssh-server
opkg install openssh-sftp-server
#修改配置文件
plaintext
nano /etc/ssh/sshd_config
需要修改和检查多数
plaintext
UsePAM yes
PermitRootLogin yes
Subsystem sftp /usr/lib/sftp-server
#启动或者重启
plaintext
/etc/init.d/sshd enable
/etc/init.d/sshd restart
#客户端连接
部分客户端 可能需要处理 .ssh/known_hosts 文件或者密钥
#最后禁用dropbear
非必需
plaintext
/etc/init.d/dropbear disable
/etc/init.d/dropbear stop
路由器这个圈子,不忍直视。一个错误的恩山论坛回帖 能转载的整个简中网都是。