首页›使用教程

WinSCP 使用教程

从第一次连接服务器,到用脚本做定时备份,按下面的顺序走一遍就能上手。

一、新建会话并连接服务器

启动 WinSCP 后会弹出登录窗口,按下面填写即可:

  • 文件协议:选择「SFTP」。若服务器不支持 SSH,再考虑 FTP 或 FTPS。
  • 主机名:服务器 IP 或域名,例如 192.168.1.10 或 example.com。
  • 端口号:SFTP 默认 22。若管理员改过端口,以实际为准。
  • 用户名 / 密码:服务器的登录凭据。root 用户若被禁止登录,请改用普通用户 + sudo。

点击「登录」后,首次连接会弹出主机密钥指纹确认。这是防止中间人攻击的关键一步,建议向服务器管理员核对该指纹后再点「是」。

想省事就点「保存」把会话存成站点,还可以勾选保存密码(会加密存储)。下次在主界面双击站点名即可连接。

二、上传、下载与在线编辑

拖拽传输

默认 Commander 双面板布局下,左边是本地目录,右边是远程目录。选中文件后直接拖到另一侧面板即可传输:左→右为上传,右→左为下载。也可以选中后按 F5 或右键选择「上传 / 下载」。

在线编辑远程文件

在右侧远程面板右键点击文本文件(如 nginx.conf、index.html),选择「编辑」,WinSCP 会用内置编辑器打开。修改后按 Ctrl+S,文件会自动上传覆盖服务器上的原文件。这是改服务器配置最省事的方式。

修改权限与属性

右键文件选择「属性」,可勾选读 / 写 / 执行权限,等价于 chmod。上传脚本后忘记给执行权限是最常见的新手问题,在这里勾选即可。

在线编辑会直接覆盖线上文件。修改重要配置前,建议先在本地面板复制一份备份,或在编辑器中另存为 .bak。

三、配置 SSH 密钥免密登录

用密码登录既不安全也不方便自动化,推荐改用密钥对。

  1. 生成密钥对:打开 PuTTYgen(PuTTY 附带,也可在 WinSCP 的「工具 → 运行 PuTTYgen」中打开),点击 Generate,晃动鼠标生成随机熵,保存私钥 id_rsa.ppk,并复制公钥文本。
  2. 部署公钥到服务器:登录服务器,把公钥内容追加到 ~/.ssh/authorized_keys,并确保权限正确:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-rsa AAAA...你的公钥内容..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  3. 在 WinSCP 中使用私钥:编辑站点,在「高级 → SSH → 验证」的「私钥文件」中选择刚才保存的 .ppk,用户名照填,密码留空即可登录。
  4. 可选:配合 Pageant:运行 Pageant 并加载私钥后,所有 PuTTY 家族工具都能免密使用,不必在每个站点里重复配置。
如果手上是 OpenSSH 格式的私钥(无 .ppk 后缀),可在 PuTTYgen 中用「Load」导入后再「Save private key」转换格式。

四、目录同步与增量备份

选中菜单「命令 → 同步」,或按 Ctrl+S(Commander 布局下),进入同步对话框:

  • 方向:本地→远程(发布网站)、远程→本地(拉取备份)、双向(两边保持一致)。
  • 比较依据:按修改时间最快;内容校验最准但更慢;文件大小适合快速粗筛。
  • 预览确认:先点「比较」,WinSCP 会列出差异清单,确认无误后再执行,避免误删。
  • 后台执行:大目录同步可转入后台队列,界面不会被卡住,可在队列窗口查看进度。

配合「排除掩码」可以跳过 .git/、node_modules/、*.log 这类目录与文件,让同步只处理真正需要的内容。

五、脚本自动化与定时任务

WinSCP 提供 winscp.com 命令行工具,把操作写成脚本文件即可批量执行。

示例:每天把远程日志拉回本地

# sync-logs.txt
open sftp://deploy:密码@192.168.1.10:22 -hostkey="ssh-rsa 2048 xx:xx:..."
get /var/log/nginx/*.log D:\backup\logs\
exit
:: run-backup.bat
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /script="D:\scripts\sync-logs.txt" ^
  /log="D:\scripts\sync-logs.log"
if errorlevel 1 echo 备份失败,请查看日志 & exit /b 1
echo 备份完成

然后在「任务计划程序」中新建基本任务,触发器设为每天,操作选择这个 .bat 文件,即可实现无人值守。

示例:PowerShell 调用 .NET 程序集

Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

$opts = New-Object WinSCP.SessionOptions -Property @{
  Protocol = [WinSCP.Protocol]::Sftp
  HostName = "192.168.1.10"
  UserName = "deploy"
  SshPrivateKeyPath = "D:\keys\id_rsa.ppk"
}
$opts.AddRawSettings("HostKey", "ssh-rsa 2048 xx:xx:...")

$session = New-Object WinSCP.Session
$session.Open($opts)
$session.PutFiles("D:\site\*", "/var/www/html/", $False).Check()
$session.Dispose()
脚本里不要写明文密码,优先使用 SSH 私钥;用 -hostkey 固定主机指纹,可同时避免交互弹窗与中间人风险。生产环境还建议设置主密码或改用环境变量注入凭据。

六、PuTTY 集成与其他技巧

  • 一键开终端:在已连接的会话中按 Ctrl+P,或选择「命令 → 在 PuTTY 中打开」,直接用当前站点信息打开 SSH 终端。
  • SSH 隧道:站点高级设置里的「隧道 / 端口转发」可把内网数据库端口映射到本地,方便用本地客户端调试远程库。
  • 保留时间戳:传输设置中勾选「保留时间戳」,跨机器同步代码时不会出现文件时间错乱。
  • 换行符转换:编辑 Linux 上的 shell 脚本时,若出现 ^M 报错,在编辑器中把换行符从 CRLF 改为 LF 再保存。
  • 工作区:同时开着多台服务器的会话时,用「工作区」保存整套布局,下次一键恢复。
  • 日志排查:遇到诡异问题,先在「偏好设置 → 日志」开启会话日志,复现后再看日志里的协议级报错,比猜快得多。

连接不上或报错?先看 常见问题中的连接失败排查清单;想全面了解能力清单,可阅读 功能介绍。

还没装 WinSCP?先下载再照着做

12 MB 安装包,简体中文界面,跟着教程十分钟连上服务器

最后更新: · 本站内容随 WinSCP 主题站W 官方版本同步校对