Skip to content

Windows 与 Linux 传输文件:WinSCP 和 scp 上传下载教程 ​

Linux 服务器入门 · 第 05 篇 / 共 18 篇

在服务器运行 ls 看不到 Windows 下载目录里的文件,因为它们在两台机器上。上传把本地副本送过去,下载把服务器文件带回来。

准备一个 Windows 本地文件 notes.txt,写上一句容易核对的文字。你还需要已验证可用的 SSH 连接信息。文中的账号、IP、端口仍需换成自己的。

先用 SFTP 看清两边的位置 ​

Windows 可使用 WinSCP。打开登录窗口,新建站点,协议选择 SFTP,填写服务器地址、SSH 端口和用户名,再按接入方式使用密码或密钥。首次连接同样要核验服务器指纹。

选择双栏 Commander 界面时,一边显示本地目录,另一边显示服务器目录。先检查两侧路径,再把 notes.txt 上传到自己的远程家目录。使用密钥时,在高级 SSH 认证设置中选择对应私钥,格式要求以工具提示为准。

文件从本地传到服务器叫上传,从服务器回到本地叫下载;两边目录不会自动同步。

传输方向示意,非 WinSCP 截图。先核对源与目标所在机器,再开始传输。

在服务器终端执行:

bash
ls -l ~/notes.txt
cat ~/notes.txt

文件存在且内容与本地一致,才说明这次上传符合预期。若服务器版本已被修改,下载时确认本地目标文件名,避免覆盖原稿。登录界面字段可对照 WinSCP 官方说明。

同一件事,用 scp 表达 ​

下面的命令都在 Windows PowerShell 中执行。先切换到本地文件所在目录,例如:

powershell
cd "$env:USERPROFILE\Downloads"

假设 notes.txt 已放在这个目录,上传到远程家目录:

powershell
scp .\notes.txt lin@198.51.100.10:notes.txt

格式是 scp 源 目标。带 账号@服务器: 的一端表示远程位置;这里冒号后是相对路径,通常从远程账号家目录开始。目标文件名换成其他名字,也会在传输时重命名。

从服务器下载,并在本地使用新文件名:

powershell
scp lin@198.51.100.10:notes.txt .\notes-from-server.txt

完成后用 Windows 编辑器打开新文件核对,不要只看传输进度条。

先记两个选项 ​

如果 SSH 端口是 2222,scp 使用大写 -P:

powershell
scp -P 2222 .\notes.txt lin@198.51.100.10:notes.txt

复制整个本地目录时使用 -r,例如 scp -r .\practice lin@198.51.100.10:practice-copy。密钥认证还可加 -i 指定本地私钥。ssh 的端口选项是小写 -p,scp 是大写 -P。 这两者不要混写。

若提示目标无权限,先换到自己的目录;不要为了传文件修改整个系统目录的权限。若找不到本地文件,先在 PowerShell 用 Get-Location、Get-ChildItem 核对当前目录和名称。

路径和参数行为可查 scp 手册。自己练习:上传一个文件,下载成不同文件名,并确认两份内容相同。