SSH 是底层“安全通道协议”,SCP 和 SFTP 是跑在这条通道上的“文件搬运工”,WinSCP 则是 Windows 下把这些搬运工包装成图形界面的“客户端软件”。OpenSSH 是 SSH 协议最主流的实现,提供了ssh、scp、sftp等命令行工具。
一、先理清层次:协议、工具、软件
| 名称 | 是什么 | 层次 | 作用 |
|---|---|---|---|
| SSH | 协议 | 应用层安全协议 | 加密远程登录、命令执行、隧道 |
| SCP | 工具/协议 | 基于 SSH | 简单安全复制文件 |
| SFTP | 协议 | 基于 SSH | 功能更丰富的安全文件传输 |
| WinSCP | 软件 | Windows 图形客户端 | 用 SFTP/SCP/FTP 等传文件 |
| OpenSSH | 实现 | SSH 协议实现 | 提供 ssh、scp、sftp、sshd |
| PuTTY | 软件 | Windows SSH 客户端 | 远程登录、隧道 |
| rsync | 工具 | 可走 SSH | 增量同步、断点续传 |
核心关系一句话:
SSH 提供加密和认证;SCP、SFTP 跑在 SSH 上;WinSCP 是使用这些协议的图形客户端。
二、SSH 是什么?
SSH 全称Secure Shell,是一种加密网络协议,用于在不安全网络上安全地远程登录、执行命令和传输数据。它替代了明文传输的 Telnet、rlogin、FTP 等。
核心能力
远程登录:
ssh user@host进入远程终端。远程命令:
ssh user@host "ls -l"不登录直接执行。文件传输:通过 SCP、SFTP 传文件。
端口转发/隧道:本地转发、远程转发、动态 SOCKS 代理。
X11 转发:远程运行图形程序,显示到本地。
密钥认证:公钥免密登录,比密码更安全。
多路复用:同一连接复用多个会话。
工作原理
SSH 采用客户端-服务器模型:
TCP 连接:默认端口 22。
版本协商:交换协议版本。
密钥交换:生成会话密钥,后续通信加密。
服务器认证:客户端验证服务器身份(known_hosts)。
用户认证:密码、公钥、证书、双因素等。
会话通道:建立加密通道,执行 shell、命令、转发等。
常用命令
ssh user@host # 远程登录 ssh -p 2222 user@host # 指定端口 ssh-keygen -t ed25519 # 生成密钥 ssh-copy-id user@host # 上传公钥 ssh -L 8080:localhost:80 user@host # 本地端口转发 ssh -D 1080 user@host # 动态 SOCKS 代理主流实现
OpenSSH:Linux/macOS 默认,最主流。
PuTTY:Windows 经典客户端。
MobaXterm、Xshell、Termius:图形化增强客户端。
三、SCP 是什么?
SCP 全称Secure Copy Protocol / Program,是基于 SSH 的安全文件复制工具。它把文件从本地复制到远程,或从远程复制到本地。
基本用法
scp file.txt user@host:/path/ # 本地 → 远程 scp user@host:/path/file.txt . # 远程 → 本地 scp -r dir user@host:/path/ # 递归复制目录 scp -P 2222 file user@host:/path/ # 指定端口特点
简单直接:一条命令完成复制。
加密安全:底层走 SSH。
支持递归:
-r复制整个目录。不支持断点续传:传一半断了要重来。
不支持增量同步:每次都全量复制。
功能有限:没有文件列表、权限修改、过滤规则。
传统 SCP 协议已过时:OpenSSH 9.0 起,
scp命令默认改用 SFTP 协议实现,但命令名和用法不变。
与 SSH 的关系
SCP 不是独立的安全机制,它依赖 SSH 提供加密通道和认证。没有 SSH,SCP 无法工作。
四、SFTP 是什么?
SFTP 全称SSH File Transfer Protocol,也是基于 SSH 的安全文件传输协议。它比 SCP 功能丰富得多。
与 SCP 对比
| 维度 | SCP | SFTP |
|---|---|---|
| 底层 | SSH | SSH |
| 功能 | 简单复制 | 文件列表、权限、重命名、删除、符号链接 |
| 断点续传 | 不支持 | 支持 |
| 增量同步 | 不支持 | 部分支持 |
| 交互式 | 否 | 是,sftp user@host |
| 协议状态 | 传统协议已弃用 | 现代主流 |
| 性能 | 简单场景略快 | 复杂场景更优 |
常用命令
sftp user@host sftp> ls sftp> get file.txt sftp> put local.txt sftp> mkdir newdir sftp> chmod 644 file.txtSFTP 是 OpenSSH 内置子系统,服务器端需要启用Subsystem sftp。
五、WinSCP 是什么?
WinSCP 是Windows 下的免费开源图形化文件传输客户端。它不是协议,而是软件。
支持协议
SFTP(最推荐)
SCP
FTP
FTPS
WebDAV
Amazon S3
核心功能
双面板界面:左边本地,右边远程,拖拽传输。
图形化登录:填主机、端口、用户名、密码或密钥。
同步浏览:目录对比、同步。
内置编辑器:直接编辑远程文件。
脚本与命令行:支持批处理、自动化。
断点续传:传输中断可恢复。
权限管理:修改远程文件权限。
隧道支持:通过 SSH 隧道连接。
与 SSH/SCP/SFTP 的关系
WinSCP 是客户端软件,它使用 SFTP 或 SCP 协议连接远程服务器,而 SFTP/SCP 又跑在 SSH 上。所以:
WinSCP → SFTP/SCP → SSH → 远程服务器
WinSCP 本身不提供加密,加密由 SSH 完成。
六、其他相关工具
| 工具 | 说明 |
|---|---|
| OpenSSH | SSH 协议标准实现,含 ssh、scp、sftp、sshd |
| PuTTY | Windows 老牌 SSH 客户端,含 pscp、psftp |
| MobaXterm | Windows 全能终端,内置 SFTP 浏览器 |
| Xshell | 商业 SSH 客户端,功能强 |
| rsync | 增量同步工具,可走 SSH,比 SCP 更适合大文件 |
| FTP/FTPS | 传统文件传输,FTP 明文,FTPS 加 TLS,与 SSH 无关 |
| Telnet | 明文远程登录,已被 SSH 取代 |
七、关系总结图
八、怎么选?
| 场景 | 推荐 |
|---|---|
| Linux/macOS 远程登录 | ssh |
| 简单传一两个文件 | scp |
| 交互式传文件、改权限 | sftp |
| Windows 图形化传文件 | WinSCP |
| 大目录增量同步 | rsyncover SSH |
| 自动化脚本 | scp、sftp、WinSCP 脚本 |
| 需要隧道 | ssh -L/-R/-D |
九、安全最佳实践
用密钥登录,禁用密码认证。
保护私钥:权限 600,不共享。
改默认端口:减少扫描,但不是安全本质。
禁用 root 直接登录。
用 Fail2ban:防暴力破解。
限制用户和 IP:
AllowUsers、防火墙。定期更新 OpenSSH。
用 SSH 证书:大规模环境更易管理。
审计日志:
/var/log/auth.log。WinSCP 保存会话加密:用主密码保护。
十、口述总结
“SSH 是安全远程登录和传输的底层协议,提供加密、认证和隧道。SCP 和 SFTP 都是跑在 SSH 上的文件传输协议/工具:SCP 简单,适合快速复制;SFTP 功能更丰富,支持断点续传、权限管理、交互式操作。OpenSSH 是 SSH 最主流的实现,提供 ssh、scp、sftp 等命令行工具。WinSCP 是 Windows 下的图形客户端,使用 SFTP 或 SCP 协议连接远程服务器,底层还是 SSH。关系可以概括为:SSH 是安全通道,SCP/SFTP 是通道上的搬运工,WinSCP 是 Windows 用户的操作界面。选择上,Linux 命令行用 ssh/scp/sftp,Windows 图形化用 WinSCP,大目录同步用 rsync over SSH。安全上,推荐密钥登录、禁用密码、保护私钥、定期更新。”