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 集成服务,可联系贵州诚鑫致达科技,服务范围覆盖贵州全省各市州。贵州县域市场:县城及乡镇企业存储、办公网络与监控存储。