Windows 本地文件上传到 Linux 服务器的完整实践(scp/ssh),以及常见踩坑总结

记录一次从 Windows 本地向 Linux 服务器上传文件的完整过程,以及过程中遇到的典型坑(尤其是"用户名误判"问题),希望能帮到后来者。


一、问题背景

  • 本地环境:Windows 10 / Windows 11

  • 服务器环境:Linux(Ubuntu)

  • 使用场景

    • 深度学习 / 模型训练

    • 将本地数据集、配置文件上传到服务器

本地文件示例

复制代码
C:\Users\user\Desktop\train_data.jsonl
C:\Users\user\Desktop\images\

服务器信息(示例,已脱敏)

复制代码
服务器 IP:192.168.10.25

服务器目标目录(示例)

复制代码
/data/project-a/model-train/
/data/project-a/datasets/images/

二、最容易踩坑的一步:确认服务器"真实用户名"

❗ 一个非常常见的误区

服务器目录名 ≠ 登录用户名

例如你可能看到服务器上有这样的路径:

复制代码
/data/project-a

⚠️ 这只是目录名,并不代表你的登录用户名是 project-a


✅ 正确做法:在服务器上查看真实用户名

在你已经成功登录服务器的终端中,执行:

复制代码
whoami

示例输出:

复制代码
user01

👉 说明你当前真正的登录用户是 user01

辅助确认命令:

复制代码
id
echo $HOME

三、使用 scp 上传单个文件(Windows → Linux)

1️⃣ scp 基本格式

复制代码
scp 本地文件路径 用户名@服务器IP:服务器目录

2️⃣ 实际可用示例(已脱敏)

复制代码
scp C:\Users\user\Desktop\train_data.jsonl user01@192.168.10.25:/data/project-a/model-train/

执行后输入服务器密码即可。


3️⃣ 在服务器上验证是否上传成功

复制代码
ls -lh /data/project-a/model-train/train_data.jsonl

四、上传整个目录(如图片数据集)

✅ 推荐方式:递归上传整个目录

复制代码
scp -r C:\Users\user\Desktop\images user01@192.168.10.25:/data/project-a/datasets/

上传完成后,服务器目录结构为:

复制代码
/data/project-a/datasets/images/*.jpg

服务器端验证

复制代码
ls /data/project-a/datasets/images | head

统计文件数量:

复制代码
ls /data/project-a/datasets/images | wc -l

五、过程中遇到的典型坑与解决方案

❌ 坑 1:误把服务器目录名当作用户名

错误示例:

复制代码
scp train_data.jsonl project-a@192.168.10.25:/data/project-a/

表现:

  • 密码明明正确

  • 但始终提示:

    复制代码
    Permission denied, please try again.

根本原因

真实用户名是 user01,而不是 project-a

✔ 正确做法:

复制代码
whoami

❌ 坑 2:scp / sftp 看起来"像是被禁用了"

表象:

  • scpsftpssh 反复 Permission denied

  • 调整各种参数仍无效

实际原因:

用户名错误导致所有认证失败,并非服务被禁用。


❌ 坑 3:Windows PowerShell 的路径与通配符问题

  • Windows 路径必须写完整:

    复制代码
    C:\Users\user\Desktop\images
  • PowerShell 不支持 Bash 风格

    复制代码
    *. {jpg,png}

❌ 坑 4:看到服务器路径就"想当然"

这是非常典型的误判:

复制代码
/data/project-a
  • 这是路径

  • 不是账号

  • ssh / scp 只关心用户名


六、经验总结(强烈建议收藏)

  1. 第一步永远是:

    复制代码
    whoami
  2. scp 使用的用户名必须与 whoami 一致

  3. 服务器目录名 ≠ 登录用户

  4. Windows 自带的 scp 已完全够用

  5. 大多数 Permission denied 本质都是 身份不匹配


七、结语

这次问题的根源并不复杂,但由于用户名理解错误,导致后续排错方向不断跑偏,浪费了大量时间。

希望这篇文章能帮助你在:

  • Windows → Linux 文件传输

  • 深度学习服务器使用

  • ssh / scp 实战场景

少踩坑、快定位、一次成功

相关推荐
翼龙云_cloud2 小时前
阿里云渠道商:阿里云弹性伸缩如何助力海量数据采集?
服务器·阿里云·云计算
老兵发新帖2 小时前
Ubuntu版本nvidia-smi提示版本不匹配问题,解决办法
linux·chrome·ubuntu
酉鬼女又兒2 小时前
Linux快速入门指南:常用快捷键➕命令行高效操作
linux·运维·服务器
小学导航员2 小时前
VMWARE虚拟机上不了网络
服务器·网络·php
林shir2 小时前
3-19-项目部署(Linux)
linux·运维·服务器
顶点多余2 小时前
Linux第一个系统程序-进度条
linux·运维·服务器
x-cmd2 小时前
[x-cmd] Wine 11.0 史诗级发布:Linux 运行 Windows 应用和游戏进入“完全体”时代
linux·windows·游戏
代码AI弗森2 小时前
NAS 服务器 vs 普通服务器:一场关于「存储中心」与「计算中心」的系统分工之争
运维·服务器
来鸟 鸣间2 小时前
linux下ffmpeg源码编译
linux·运维·ffmpeg