常规 SCP 命令失败(VPN/网络活动)

常规 SCP 命令失败(VPN/网络活动)

我的开发机器运行在 Fedora(36)上。

最近我尝试将一个文件 scp 到远程服务器(CentOS 7)并收到一条神秘的错误消息:

scp:目标打开(“”):没有该文件或目录

该命令类似于:

scp -C foo.ext user@internal-vpn-ip:~/

没什么特别的,多年来已经多次这样做了,没有问题。奇怪的是,我想,一切都正常运转,但 scp 找不到远程路径。经过一些实验,我扩展了远程用户路径:

scp -C foo.ext user@remote-ip:/path/to/user/

瞧!成功了!

问题是,为什么~路径扩展不再起作用?

答案1

看起来在 RedHat 9+ SCP 现在在底层使用 SFTP。

在里面OpenSSH SCP 弃用页面上列出了与 RedHat 9 之前系统和 RedHat 9+ 系统相关的不兼容性和注意事项,包括此相关代码片段。

协议之间的另一个区别在于基于 ~ 的路径处理的扩展。OpenSSH 8.7 及更高版本支持特殊的 SFTP 扩展来处理此扩展。不幸的是,早期版本不支持此扩展,因此如果使用 ~ 路径处理,将文件夹从新版本的 RHEL 复制到旧版本将会失败。在这种情况下,建议的修复方法是提供绝对路径。

所以这就解释了为什么需要手动扩展路径。虽然很烦人,但至少现在我们知道为什么了 :)

相关内容