SSH(Secure Shell)是一种加密的网络协议,广泛应用于Linux系统的远程管理和文件传输,相较于传统的FTP协议,SSH通过加密传输数据,确保了文件在传输过程中的安全性,有效防止信息泄露和中间人攻击,本文将详细介绍通过SSH上传文件的多种方法,包括命令行工具、图形化界面工具,以及相关的高级技巧和注意事项,帮助读者根据实际需求选择合适的方案。

命令行工具上传文件:高效且灵活
命令行工具是Linux环境下管理文件的首选方式,通过SSH上传文件时,常用的命令行工具包括scp、sftp和rsync,它们各有特点,适用于不同场景。
scp:安全复制文件的利器
scp(Secure Copy)是基于SSH协议的文件复制工具,语法简单,适合快速上传单个文件或小目录,其基本语法为:
scp [选项] 源文件 用户名@远程服务器IP:远程路径
常用选项:
-r:递归复制目录,用于上传整个文件夹;-P:指定SSH端口(默认为22,注意大写);-p:保留文件的权限、时间戳等属性;-C:启用压缩传输,适合大文件。
示例:
- 上传本地文件
test.txt到远程服务器的/home/user/目录:scp test.txt user@192.168.1.100:/home/user/
- 上传本地目录
project/到远程服务器,并指定端口2222:scp -r -P 2222 project/ user@192.168.1.100:/opt/
注意事项:
- 使用scp时,需确保远程服务器已开启SSH服务(默认端口22);
- 若服务器修改了SSH端口,必须通过
-P选项指定,否则连接失败; - 传输大文件时,可通过
-C选项开启压缩,减少传输时间。
sftp:交互式文件传输协议
sftp(SSH File Transfer Protocol)是基于SSH的安全文件传输协议,提供了类似FTP的交互式命令行界面,支持上传、下载、删除、重命名等操作,功能更丰富。
使用步骤:
- 建立SFTP连接:
sftp user@192.168.1.100
- 进入交互模式后,常用命令包括:
put:上传文件(如put local.txt remote.txt);mput:批量上传文件(如mput *.txt);lcd:切换本地目录(如lcd /home/user/docs);cd:切换远程目录(如cd /opt/project);progress:显示传输进度(部分sftp客户端支持)。
示例:
上传本地/data/目录下的所有.log文件到远程服务器的/var/log/backup/:
sftp user@192.168.1.100 lcd /data cd /var/log/backup mput *.log exit
优势:
- 支持断点续传(通过
resume命令),适合大文件传输中断后恢复; - 可交互式管理文件,无需频繁切换命令窗口。
rsync:增量同步的高效工具
rsync(Remote Sync)是一款强大的文件同步工具,通过差异算法仅传输文件的变化部分,大幅减少网络传输量,适合定期备份或同步大型目录。

基本语法:
rsync [选项] 源路径 用户名@远程服务器IP:远程路径
常用选项:
-a:归档模式,保留文件属性(权限、时间戳等);-v:显示详细传输过程;-z:压缩传输数据;--progress:实时显示传输进度;--delete:删除目标目录中多余的文件(确保完全同步)。
示例:
同步本地/home/user/project/目录到远程服务器,并删除远程目录中已不存在的本地文件:
rsync -avz --progress --delete /home/user/project/ user@192.168.1.100:/opt/project/
适用场景:
- 定期备份服务器文件(如每日同步数据库备份);
- 跨服务器同步代码库或静态资源,避免全量传输。
图形化工具上传文件:直观易用
对于不熟悉命令行的用户,图形化工具提供了更友好的操作界面,支持拖拽上传,适合日常文件管理需求。
FileZilla:跨平台开源工具
FileZilla是一款免费、跨平台的FTP/SFTP客户端,支持Windows、macOS和Linux,界面简洁,功能完善。
使用步骤:
- 下载并安装FileZilla(官网:https://filezilla-project.org/);
- 新建站点:点击“文件”→“站点管理器”→“新建站点”,填写协议(选择SFTP)、主机IP、用户名、密码(或密钥);
- 连接后,左侧为本地文件目录,右侧为远程服务器目录,直接拖拽文件即可上传。
优势:
- 支持断点续传和队列管理,可批量上传多个文件;
- 内建文件搜索功能,快速定位远程服务器文件。
WinSCP:Windows用户首选
WinSCP是Windows平台下的经典SFTP客户端,除文件传输外,还支持同步编辑、脚本自动化等功能,适合开发人员和运维人员。
使用步骤:

- 下载安装WinSCP(官网:https://winscp.net/);
- 新建会话:输入主机名、用户名、密码,选择“SFTP”协议;
- 登录后,左侧为本地目录,右侧为远程目录,支持拖拽或右键“上传”操作。
特色功能:
- 支持与文本编辑器(如VS Code)集成,双击远程文件直接编辑;
- 可通过脚本实现自动化上传(如.bat或.ps1脚本)。
MobaXterm:一体化开发环境
MobaXterm是一款功能强大的多功能终端工具,集成了SSH客户端、SFTP、X11转发等功能,适合需要在Windows环境下管理Linux服务器的用户。
使用步骤:
- 下载安装MobaXterm(官网:https://mobaxterm.mobatek.net/);
- 启动后点击“Session”→“SSH”,输入服务器IP和用户名连接;
- 在“SFTP”标签页中,直接拖拽文件即可上传。
优势:
- 集成X11服务器,支持远程图形界面程序;
- 内建多标签终端,可同时管理多个SSH连接。
高级技巧与注意事项
SSH密钥认证:免密码登录
为避免每次上传文件时输入密码,可通过SSH密钥认证实现免密码登录:
- 生成密钥对(本地执行):
ssh-keygen -t rsa -b 4096
- 将公钥复制到远程服务器:
ssh-copy-id user@192.168.1.100
- 后续通过SSH连接时无需输入密码,直接使用密钥验证。
批量上传与脚本自动化
通过Shell脚本可批量上传文件,例如上传当前目录下所有.tar.gz文件:
#!/bin/bash
for file in *.tar.gz; do
scp "$file" user@192.168.1.100:/backup/
done
保存为upload.sh,执行chmod +x upload.sh后运行即可。
安全性建议
- 禁用root直接登录:修改远程服务器
/etc/ssh/sshd_config,设置PermitRootLogin no; - 修改默认SSH端口:将
Port 22改为其他端口(如2222),降低被扫描风险; - 定期更新SSH密钥:避免长期使用同一对密钥,确保账户安全。
常见错误排查
- Permission denied:检查远程目录权限(
chmod 755 /path/to/dir)或用户是否有写入权限; - Connection timed out:确认网络连通性,检查服务器防火墙是否开放SSH端口;
- No such file or directory:验证远程路径是否存在,避免路径拼写错误。
通过SSH上传文件是Linux服务器管理的核心技能,无论是命令行工具(scp、sftp、rsync)还是图形化工具(FileZilla、WinSCP),都能满足不同场景的需求,掌握这些方法,并结合密钥认证、脚本自动化等技巧,可大幅提升文件传输效率和安全性,在实际操作中,需根据文件大小、传输频率和安全要求选择合适的工具,并严格遵守安全规范,确保服务器和数据的安全。

















