SCP和SFTP基于SSH实现安全文件传输,SCP适用于脚本化复制,SFTP支持交互式管理,二者结合密钥认证与端口限制可有效保障传输安全。

在Linux系统中,安全的文件传输是日常运维和开发工作中的基本需求。直接使用明文协议(如FTP)存在账号密码泄露风险,因此推荐使用基于SSH的安全传输方式——SCP和SFTP。这两种工具都通过加密通道传输数据,保障文件在公网或内网中的安全性。
SCP:安全复制命令
SCP(Secure Copy Protocol)是基于SSH的文件复制命令,适用于在本地与远程主机之间复制文件或目录,语法简单,适合脚本中使用。
基本用法:
- 从本地复制文件到远程主机:
scp /path/to/local/file username@remote_host:/path/to/remote/directory - 从远程主机下载文件到本地:
scp username@remote_host:/path/to/remote/file /path/to/local/directory - 复制整个目录(递归):
scp -r /path/to/local/dir username@remote_host:/remote/path/ - 指定非默认SSH端口:
scp -P 2222 file.txt user@host:/tmp/
SCP的优点是无需交互,适合自动化任务。但不支持删除、重命名等操作,功能较为单一。
SFTP:交互式安全文件传输
SFTP(SSH File Transfer Protocol)不是FTP over SSH,而是SSH协议的一部分,提供类似FTP的交互式文件管理功能,同时全程加密。
连接与常用命令:
- 连接远程主机:
sftp username@remote_host 或指定端口 sftp -oPort=2222 username@host - 常用操作命令:
put filename —— 上传文件
get filename —— 下载文件
ls —— 查看远程文件列表
lls —— 查看本地文件列表
cd /path —— 切换远程目录
lcd /local/path —— 切换本地目录
rm filename —— 删除远程文件
mkdir dirname —— 创建远程目录
SFTP支持断点续传、权限修改(chmod)、文件重命名等功能,适合需要频繁交互的场景。
提升安全性建议
虽然SCP和SFTP本身基于SSH加密,但仍需注意以下几点以增强整体安全性:
- 禁用root用户直接登录SSH,使用普通用户再切换权限
- 更改默认SSH端口,减少暴力扫描风险
- 使用密钥认证替代密码登录,避免密码泄露
生成密钥对:ssh-keygen -t ed25519,然后使用 ssh-copy-id 安装公钥 - 限制用户可访问的目录(通过chroot或SSH配置Match块)
基本上就这些。SCP适合简单快速的文件复制,SFTP适合需要交互管理的场景。两者都依赖SSH服务,只要SSH配置得当,就能实现安全可靠的文件传输。









