ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

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 采用客户端-服务器模型:

  1. TCP 连接:默认端口 22。

  2. 版本协商:交换协议版本。

  3. 密钥交换:生成会话密钥,后续通信加密。

  4. 服务器认证:客户端验证服务器身份(known_hosts)。

  5. 用户认证:密码、公钥、证书、双因素等。

  6. 会话通道:建立加密通道,执行 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 对比

维度SCPSFTP
底层SSHSSH
功能简单复制文件列表、权限、重命名、删除、符号链接
断点续传不支持支持
增量同步不支持部分支持
交互式否是,sftp user@host
协议状态传统协议已弃用现代主流
性能简单场景略快复杂场景更优

常用命令

sftp user@host sftp> ls sftp> get file.txt sftp> put local.txt sftp> mkdir newdir sftp> chmod 644 file.txt

SFTP 是 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 完成。


六、其他相关工具

工具说明
OpenSSHSSH 协议标准实现,含 ssh、scp、sftp、sshd
PuTTYWindows 老牌 SSH 客户端,含 pscp、psftp
MobaXtermWindows 全能终端,内置 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

九、安全最佳实践

  1. 用密钥登录,禁用密码认证。

  2. 保护私钥:权限 600,不共享。

  3. 改默认端口:减少扫描,但不是安全本质。

  4. 禁用 root 直接登录。

  5. 用 Fail2ban:防暴力破解。

  6. 限制用户和 IP:AllowUsers、防火墙。

  7. 定期更新 OpenSSH。

  8. 用 SSH 证书:大规模环境更易管理。

  9. 审计日志:/var/log/auth.log。

  10. 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。安全上,推荐密钥登录、禁用密码、保护私钥、定期更新。”

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进