首页›使用教程
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 密钥免密登录
用密码登录既不安全也不方便自动化,推荐改用密钥对。
-
生成密钥对:打开 PuTTYgen(PuTTY 附带,也可在 WinSCP 的「工具 → 运行 PuTTYgen」中打开),点击 Generate,晃动鼠标生成随机熵,保存私钥
id_rsa.ppk,并复制公钥文本。 -
部署公钥到服务器:登录服务器,把公钥内容追加到
~/.ssh/authorized_keys,并确保权限正确:mkdir -p ~/.ssh chmod 700 ~/.ssh echo "ssh-rsa AAAA...你的公钥内容..." >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys - 在 WinSCP 中使用私钥:编辑站点,在「高级 → SSH → 验证」的「私钥文件」中选择刚才保存的 .ppk,用户名照填,密码留空即可登录。
- 可选:配合 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 再保存。 - 工作区:同时开着多台服务器的会话时,用「工作区」保存整套布局,下次一键恢复。
- 日志排查:遇到诡异问题,先在「偏好设置 → 日志」开启会话日志,复现后再看日志里的协议级报错,比猜快得多。
连接不上或报错?先看 常见问题中的连接失败排查清单;想全面了解能力清单,可阅读 功能介绍。