scp复制失败主因是ssh服务未运行或22端口被防火墙拦截;需检查sshd状态和端口监听,改端口须用-p指定,-r递归复制时路径末尾斜杠影响语义,大文件可优化加密算法、启用压缩或限速,-p保留权限与时间戳但受限于文件系统及跨平台兼容性。

scp复制文件时提示“Connection refused”或超时
这基本是远程服务器没开SSH服务,或者防火墙拦了22端口。先在远程机器上执行 systemctl status sshd 确认服务是否运行;再用 ss -tlnp | grep :22 看端口是否监听。如果改过SSH端口(比如设成2222),本地命令必须加 -P 2222(注意是大写P),否则默认连22——漏掉这个参数是高频错误。
复制目录必须加 -r,但加了还是失败
-r 是递归复制的强制开关,不加就只传空目录或报错。但容易踩的坑是:目标路径末尾有没有斜杠,语义完全不同:
-
scp -r dir/ user@host:/path/→ 把dir/下所有内容放进/path/ -
scp -r dir user@host:/path→ 把整个dir目录(含名字)复制到/path/dir
另外,源路径带不带末尾 / 也影响行为,建议统一用 dir/ 形式避免歧义。
传输大文件卡住、速度慢,怎么优化
默认SCP走AES-128加密,CPU吃紧时会拖慢吞吐。可换更快的加密算法:
- 加
-c aes128-gcm@openssh.com(OpenSSH 6.8+ 支持) - 加
-C开启压缩,对文本类文件有效,二进制文件可能反而更慢 - 用
-l 1000限速(单位Kbit/s),防止占满带宽影响其他服务
注意:-c 和 -C 都要双方OpenSSH版本支持,老系统可能不识别。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
权限保留、时间戳丢失问题
默认SCP不保留修改时间、权限位,尤其部署脚本或配置文件时容易出问题。加 -p 参数即可:
scp -p config.yml user@host:/etc/myapp/
但要注意:-p 仅在目标文件系统支持对应属性时才生效(比如ext4可以,NFS或某些容器卷可能丢时间戳)。如果目标机是不同用户,即使加了 -p,属主/属组也不会被复制过去——那是 rsync --chown 的事,不是scp能解决的。
真正麻烦的是跨平台或权限模型差异大的场景,比如从Linux往FreeBSD传文件,-p 可能部分失效,这时候得靠后续手动 chmod 或换 rsync。










