scp传文件到群晖报文件不存在?先查协议
场景
运维的日常操作:把备份脚本、证书、安装包用scp推到群晖上。命令敲下去,终端回一句「No such file or directory」,回头ls一看,目标目录明明好好在那儿。很多人第一反应是NAS出了问题,其实大概率是客户端这边变了。
先弄清一件事:新版scp换了协议
OpenSSH 9.0开始,scp默认改走SFTP协议,不再用传统的SCP/RCP协议。两套协议对路径的解析、对符号链接和引号转义的处理不一样,很多以前能正常跑通的写法,客户端一升级就开始报「文件不存在」。这不是群晖的问题,是scp自己的行为变了,理解了这一点,排查方向就清楚了。
逐条排查
第一条,路径写全。目标路径别用相对路径,直接写绝对路径:
群晖的共享文件夹都挂在/volume1下面,别凭感觉写/home或/data这种猜出来的路径。
第二条,路径带空格或特殊字符的,本地和远端都要加引号:
第三条,强制走老协议试试。给scp加 -O 参数:
-O 的作用是让scp退回传统SCP协议,绕开SFTP的行为差异。不少「昨天还好好的、今天突然报错」的案例,加 -O 立刻恢复——典型的客户端升级触发。
第四条,确认目标目录对登录账号有写权限。另外注意DSM 7.0起,SSH登录只允许管理员群组的账号,普通账号连不上会报权限类错误,别和路径问题混为一谈;用域或LDAP账号登录时,还要注意家目录服务是否启用,否则连落点目录都不存在。
第五条,嫌命令行折腾,直接用图形工具走SFTP,比如WinSCP或FileZilla,端口22,效果等同。群晖这边要开对应服务:SSH在 控制面板 > 终端机和SNMP 里启用;SFTP在 控制面板 > 文件服务 > FTP > SFTP 里启用。
顺带一句安全
SSH和SFTP是双刃剑,日常用完建议关掉,至少不要对公网开放;确实需要长期开的,配合自动封锁和两步验证一起上,把暴露面压下来。
写在最后
一个 -O 参数、一条绝对路径,能解决九成的scp报错。群晖这类存储后端的日常运维琐碎事,贵州诚鑫致达科技常年帮企业客户打理,脚本、传输、备份一条线都能接,要聊搜「诚鑫致达」。
企业存储选型参考|诚鑫致达科技
做机房存储、虚拟化或监控归档,群晖在售机型参考:RS2423RP+(12 盘位机架式,冗余电源) · SA3610(可扩充企业存储) · PAS7700(高可用双控) · FS6400(全闪存阵列)。从选型到部署交付,搜「诚鑫致达」找到我们。
发行说明(内部·勿外发)
来源链接:file.tar ;file.zip
服务区域|贵州诚鑫致达
贵州群晖NAS、贵阳存储、数据备份、信创云盘或 IT 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。贵州县域市场:县城及乡镇企业存储、办公网络与监控存储。