遇到一个scp复制档案到NAS server的怪问题:

先定义一下:有3台电脑分别为:a:debian10, b:ubuntu1804, c:debian12
然后我下一了个指令(成功):
user1@a:/home/user1$ scp aaa.txt admin@192.168.171.XXX:“/ggg/ddd/log”

(成功):
user1@b:/home/user1$ scp aaa.txt admin@192.168.171.XXX:“/ggg/ddd/log”

(失败):
user1@c:/home/user1$ scp aaa.txt admin@192.168.171.XXX:“/ggg/ddd/log”
失败讯息如下:
scp: dest open “/ggg/ddd/log”: No such file or directory
scp: failed to upload file aaa.txt to /ggg/ddd/log
在c 电脑上ssh 登入NAS也是没问题的!
NAS也没有启动防火墙!

试试 scp -O ...

你这个目标目录存在吗?是在什么奇怪的文件系统上吗?

这有什么奇怪吗?往一个位置多次传一个同名文件,难道要ta开口说,哥,已经有了,要(覆)盖吗?

谢谢 依云 大大的回覆,
1-NAS目标目录是存在的
2-NAS目标机器的系统也是Linux系统,長的像连结这样:

3-
user1@c:/home/user1$ scp -F /etc/ssh/ssh_config -o port=22 aaa.txt admin@192.168.171.XXX:/ggg/ddd/log
得到以下讯息:
scp: dest open “/ggg/ddd/log”: No such file or directory
scp: failed to upload file aaa.txt to /ggg/ddd/log

4-
但发现(从c 上传到a, b 的user1家目录都可以成功)
user1@c:/home/user1$ scp -F /etc/ssh/ssh_config -o Port=10022 aaa.txt user1@192.168.171.X(这是目标a电脑):~
说明:drwxr-xr-x 32 user1 user1 4096 3月 19 09:27 user1(a的家目录权限)

user1@c:/home/user1$ scp -F /etc/ssh/ssh_config -o Port=30022 aaa.txt user1@192.168.171.X(这是目标b电脑):~
说明:drwxr-xr-x 10 user1 user1 4096 Mar 19 09:16 user1(b的家目录权限)

怎么c 就不能上传到NAS,而a,b 却都可以上传到NAS ?? 到底哪里出了问题,头好晕@@

呃,你这上传的目录不是不一样吗……

呃…我是想表达,同样是使用scp指令…从c电脑送到NAS不行, 但c送a,b 可以,而a, b 使用scp指令却可以送到NAS.不知c的问题 出在哪里?

虽然目录不同,但目标目录都是可以被写入的权限都没有问题啊,c 不能送到NAS,就很怪,但我刚才发现,问题可能出在NAS,因为在NAS上的日志发现如图 , a的scp送到NAS成功日志会写:successfully via ssh ;
但c的scp送到NAS失败日志会写:橘色那2行字(竟是sftp??)

c 的问题出在目标路径不存在。报错不是讲得很明白了吗?

你一开始提问就在误导我,弄个假的、相同的地址,搞得我还查了半天文档想到底可能是哪里有问题。

谁管你根目录了?目标目录不存在,scp 不会自动创建的。

所以我给你的回复你一点也没看是吧?

你的 scp 版本不同。旧版本会使用 scp 协议,新版本默认使用 sftp 协议(因为更安全)。使用 -O 选项可以让它也使用 scp 协议。

以上有让您误解的部份我先道歉,对不起!
而c的讯息的确说目标不存在,我知道,但如果目标目录不存在,怎么同样的格式在a, b 两台linux 上可以正常传送到nas呢? 更何况我都说了,目标目录是存在 的,我自己建的我知道…另外,.我明明就试了scp -o的结果了.怎么你会说我没看你回覆??..
另可否告知我哪个部份误导你?..一开始我就说的很清楚是3台电脑a,b,c真的上传到nas,只不过数字部份XXX表示而己,路径用简单字母代表 …到底哪个部份误导了…?

因为格式并没有问题。有问题的是目标目录。

比如你弄错了。

比如这里你又给出了不同的目录。我至今仍然不知道你成功的目录和失败的目标目录到底是怎么写的。

那你怎么不知道 sftp 和 scp 协议的区别?跑别人给的命令之前请翻文档看一下参数是什么意思。

「路径相同」这件事误导了。

再次向依云大抱歉,没写清楚是同一台NAS,这次画了图是否有比较清楚一点.
另我只是新手,能理解您的意思使用scp -o 的作法是如此: 这指令格式是我看man scp 说明的, 放在c上跑就失败 (找不到目标)
scp -F /etc/ssh/ssh_config -o port=22 aaa.txt admin@192.168.171.XXX:/ggg/ddd/log
但放在a, b 上跑就成功, 而我原本使用的没有-o选项的作法也是一样的结果在c上跑就失败.在a,b上就成功…我不解的就是这里.
结论就是不论有没有-o option 在c上跑就是会失败,在a,b 上跑就成功.
不好意思,我担误了你不少时间,无论是否有结果,还是要再跟您说声抱歉,也谢谢您的帮忙!

所以还是没有准确的路径信息么……

-O 选项而不是 -o 选项。我一开始的猜测是,你的路径里有特殊字符,scp 协议和 sftp 的解释不一样。

注意大小写,-o-O 是两个不同的开关

a,b,c三台電腦用的精確格式如下
scp bbb.txt admin@192.168.171.252:/volume1/NetBackup/sss

scp -O選項我再找時間測.

今早來上班立刻去試了-O 就可以了:
scp -O bbb.txt admin@192.168.171.252 admin@192.168.171.252:/volume1/NetBackup/sss
您真6,一開始就解了我的問題,只是我錯看符號.哈…
加上沒把路徑表達清楚是同一台NAS,又導致您花了許多時間,真是過意不去…對不起!
但還是很感謝您的耐心回復,真的很有耐心,佩服了!