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仓库安装
或者手动安装,注意选择你的cpu架构
1
2
3
| 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*
|
配置本地储存节点
1
| rclone config --config /etc/rclone/rclone.conf
|
添加一个本地储存 ,或者直接在rclone.conf文件添加
1
2
| [localhost]
type = local
|
搭建服务
编辑 /etc/rc.local 在exit 0前面 添加一行,或者路由器界面中 系统> 启动项> 本地其中脚本中输入
1
2
3
| 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端口
1
2
3
| uci set dropbear.@dropbear[0].Port=2222
uci commit dropbear
/etc/init.d/dropbear restart
|
然后客户端重新连接 ssh root@10.1.1.1 -p 2222
这样 dropbear 就在2222 临时提供 ssh和scp协议
安装openssh 和sftp
1
2
3
4
| rm /etc/ssh/sshd_config #如果有这个文件最好删掉 重新配置
opkg update
opkg install openssh-server
opkg install openssh-sftp-server
|
修改配置文件
1
| nano /etc/ssh/sshd_config
|
需要修改和检查多数
1
2
3
| UsePAM yes
PermitRootLogin yes
Subsystem sftp /usr/lib/sftp-server
|
启动或者重启
1
2
| /etc/init.d/sshd enable
/etc/init.d/sshd restart
|
客户端连接
部分客户端 可能需要处理 .ssh/known_hosts 文件或者密钥
最后禁用dropbear
非必需
1
2
| /etc/init.d/dropbear disable
/etc/init.d/dropbear stop
|
路由器这个圈子,不忍直视。一个错误的恩山论坛回帖 能转载的整个简中网都是。