在Linux系统中,SSH(Secure Shell)不仅是一种远程管理协议,还提供了安全的文件传输能力,通过SSH,用户可以在本地与远程主机之间安全地传输文件,常用的下载命令包括scp
、sftp
以及结合rsync
的高级用法,以下将详细介绍这些命令的使用方法、参数选项及实际应用场景。

SCP命令:基于SSH的安全文件复制
SCP(Secure Copy)是SSH最基础的文件传输工具,通过加密通道在本地和远程主机之间复制文件,其基本语法为scp [选项] [源路径] [目标路径]
,其中源路径和目标路径可以包含用户名和主机地址,格式为[用户名@主机地址:]文件路径
。
基本用法
-
从远程主机下载文件到本地
命令格式:scp username@remote_host:/path/to/remote/file /local/path
示例:scp user@192.168.1.100:/home/user/data.txt ~/Downloads/
此命令会将远程主机168.1.100
上/home/user/data.txt
文件下载到本地用户的Downloads
目录。 -
下载整个目录
使用-r
参数递归复制目录:
scp -r username@remote_host:/path/to/remote/directory /local/path
示例:scp -r user@192.168.1.100:/home/user/project ~/Documents/
常用参数选项
参数 | 功能说明 |
---|---|
-P |
指定SSH端口号(默认22) |
-p |
保留文件的修改时间、权限等元数据 |
-C |
启用压缩传输,适合大文件或慢速网络 |
-l |
限制传输速率(单位:Kbit/s) |
-i |
指定私钥文件路径 |
高级用法
-
通过代理服务器传输
若需通过中间主机转发,可使用-J
参数:
scp -J proxy_user@proxy_host user@remote_host:/file /local/path
(图片来源网络,侵删) -
使用非默认端口
scp -P 2222 user@192.168.1.100:/file ~/Downloads/
SFTP命令:交互式文件传输
SFTP(SSH File Transfer Protocol)提供了类似FTP的交互式命令行界面,支持断点续传、权限检查等功能,适合需要精细控制的场景,启动SFTP后,可通过以下命令操作:
基本操作流程
sftp username@remote_host
连接成功后,进入SFTP命令行界面,常用命令包括:
get remote_file [local_file]
:下载文件get -r remote_directory
:下载目录ls [path]
:列出远程目录内容lcd local_path
:切换本地工作目录exit
:退出SFTP
实用技巧
-
断点续传
使用-a
或-c
参数:sftp -a user@remote_host
,在传输中断后重新连接可自动续传。(图片来源网络,侵删) -
批量下载
结合mget
命令:mget *.txt
下载所有txt文件。
Rsync命令:高效增量同步
Rsync通过差异算法仅传输文件变化部分,适合大文件或频繁同步场景,其语法为rsync [选项] [源路径] [目标路径]
。
从远程下载
rsync -avz username@remote_host:/path/to/remote/ /local/path
-a
:归档模式,保留权限、时间戳等-v
:显示详细过程-z
:压缩传输数据
进阶功能
-
排除特定文件
rsync -avz --exclude='*.tmp' user@remote_host:/data /backup
-
保留符号链接
使用-L
参数:rsync -avzL user@remote_host:/link /local
性能优化与安全建议
-
网络优化
- 使用
-C
(SCP)或-z
(Rsync)启用压缩 - 通过
-l
限制带宽避免占用过多资源
- 使用
-
安全增强
- 禁用密码认证,改用SSH密钥对
- 在
~/.ssh/config
中配置主机别名简化命令:Host remote HostName 192.168.1.100 User username Port 22 IdentityFile ~/.ssh/id_rsa
后续可直接使用
scp remote:/file ~/Downloads/
-
错误处理
- 检查防火墙是否开放SSH端口(默认22)
- 确认远程主机权限设置正确(如
.ssh
目录权限需为700)
相关问答FAQs
问题1:如何解决SCP下载时出现的“Permission denied”错误?
解答:该错误通常由权限不足引起,需检查三点:
- 远程文件权限是否允许当前用户读取(
ls -l /path/to/file
); - 本地目标目录写入权限(
chmod 755 ~/Downloads
); - SSH密钥认证是否正确配置(可通过
ssh -v user@remote_host
调试连接过程)。
问题2:Rsync与SCP在传输大文件时哪个效率更高?
解答:Rsync效率更高,原因在于:
- 增量传输:仅同步文件变化部分,适合二次传输;
- 压缩算法:默认支持压缩,减少网络带宽占用;
- 断点续传:通过
--partial
参数保留未完成传输的文件。
但SCP语法更简单,适合一次性小文件传输。