SFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,基于SSH协议构建,提供了加密的数据传输和身份验证机制,常用于在本地系统和远程服务器之间安全地传输文件,与传统的FTP协议相比,SFTP通过SSH协议进行通信,所有数据(包括用户名、密码和文件内容)都会进行加密,有效防止了数据在传输过程中被窃取或篡改,本文将详细介绍SFTP命令的使用方法,包括连接、上传、下载、目录操作等常见场景,并通过表格形式总结常用命令,帮助用户快速掌握SFTP文件传输的技巧。

连接远程服务器
使用SFTP连接远程服务器是文件传输的第一步,基本语法为sftp [用户名]@[服务器地址]
,连接到IP地址为192.168.1.100的远程服务器,用户名为root
,命令为sftp root@192.168.1.100
,执行后会提示输入密码,验证成功后即可进入SFTP命令行环境,此时命令提示符会变为sftp>
,如果需要指定SSH端口(非默认的22),可以使用-P
参数,如sftp -P 2222 root@192.168.1.100
,连接后,可通过ls
命令查看远程服务器当前目录的文件列表,使用前缀可执行本地系统命令,例如!ls
查看本地文件。
文件上传与下载
上传和下载是SFTP最核心的功能,上传文件使用put
命令,基本语法为put [本地文件路径] [远程文件路径]
,例如put /local/path/file.txt /remote/path/file.txt
,如果省略远程路径,文件将上传到当前远程目录,上传整个目录需使用put -r [本地目录路径]
,其中-r
表示递归上传,下载文件则使用get
命令,语法为get [远程文件路径] [本地文件路径]
,例如get /remote/path/file.txt /local/path/file.txt
,同样支持-r
参数下载整个目录,在传输过程中,可通过progress
命令开启实时传输进度显示,方便监控传输状态。
目录与文件操作
SFTP支持丰富的目录和文件管理命令,切换远程目录使用cd
,如cd /remote/path
;查看当前远程路径用pwd
,本地目录切换需使用lcd
,例如lcd /local/path
,创建远程目录用mkdir [目录名]
,删除空目录用rmdir [目录名]
,删除文件或目录(非空)需使用rm -r [路径]
,重命名文件或目录通过rename [旧路径] [新路径]
实现,例如rename old.txt new.txt
,修改文件权限使用chmod [权限模式] [文件名]
,如chmod 755 script.sh
;修改文件所有者则通过chown [用户名] [文件名]
,但需注意远程服务器需支持该操作且用户有足够权限。
高级操作与技巧
SFTP还支持批量传输和断点续传功能,通过mput
和mget
可同时传输多个文件,例如mput *.txt
上传所有txt文件,mget *.log
下载所有log文件,若传输中断,再次执行put
或get
命令时,SFTP会自动从断点续传,无需重新开始,可通过bye
或exit
退出SFTP会话,对于需要频繁操作的服务器,可在SSH配置文件(~/.ssh/config
)中设置别名,简化连接命令,例如添加以下配置:

Host server1
HostName 192.168.1.100
User root
Port 22
之后可直接通过sftp server1
连接,无需每次输入完整地址。
常用SFTP命令总结
以下表格列出了SFTP中常用的命令及其功能说明:
命令 | 功能描述 | 示例 |
---|---|---|
ls |
列出远程目录文件 | ls -l (显示详细信息) |
cd |
切换远程目录 | cd /var/log |
lcd |
切换本地目录 | lcd /home/user |
pwd |
显示当前远程路径 | pwd |
get |
下载远程文件 | get file.txt |
put |
上传本地文件 | put file.txt |
mkdir |
创建远程目录 | mkdir new_dir |
rm |
删除远程文件 | rm file.txt |
rmdir |
删除空目录 | rmdir empty_dir |
rename |
重命名文件/目录 | rename old.txt new.txt |
chmod |
修改文件权限 | chmod 644 file.txt |
mget |
批量下载文件 | mget *.log |
mput |
批量上传文件 | mput *.txt |
progress |
显示传输进度 | progress (开启) |
相关问答FAQs
Q1: SFTP传输文件时速度很慢,如何优化?
A1: SFTP速度慢可能由网络延迟或加密算法开销导致,可尝试以下方法优化:1)使用-C
参数启用压缩,如sftp -C root@server
;2)调整SSH加密算法,在/etc/ssh/sshd_config
中添加Ciphers aes128-ctr
等高效算法;3)检查网络带宽,避免与其他高流量应用竞争;4)对于大文件,可先压缩再传输,减少数据量。
Q2: SFTP连接失败提示“Permission denied”,如何解决?
A2: 该问题通常由权限不足或认证错误导致,解决步骤:1)确认用户名和密码正确;2)检查远程服务器SSH配置是否允许SFTP(/etc/ssh/sshd_config
中Subsystem sftp
是否启用);3)验证用户对目标目录是否有读写权限,可通过chmod
和chown
调整;4)若使用密钥认证,确保本地~/.ssh/id_rsa
与远程~/.ssh/authorized_keys
中的公钥匹配;5)检查服务器防火墙是否开放SFTP端口(默认22)。
