学习 Linux SFTP(SSH File Transfer Protocol) 可以分为 基础使用 → 进阶配置 → 自动化与安全加固 三个阶段。下面给你一个系统、实用的学习路线,适合初学者到进阶。
SFTP ≠ FTP
| 对比项 | FTP | SFTP |
|---|---|---|
| 是否加密 | ❌ 明文 | ✅ 加密 |
| 默认端口 | 21 | 22(SSH) |
| 依赖服务 | FTP 服务 | SSH 服务 |
| 安全性 | 低 | 高 |
✅ SFTP 是 SSH 的一部分,只要能 SSH,就能 SFTP
ssh -V
systemctl status sshd
如果没有:
# CentOS / Rocky / Alma
yum install -y openssh-server
# Ubuntu / Debian
apt install -y openssh-server
启动:
systemctl enable sshd
systemctl start sshd
sftp user@server_ip
示例:
sftp root@192.168.1.10
成功后会看到:
sftp>
| 命令 | 作用 |
|---|---|
pwd |
查看远程目录 |
lpwd |
查看本地目录 |
ls |
查看远程文件 |
lls |
查看本地文件 |
cd |
切换远程目录 |
lcd |
切换本地目录 |
get file |
下载 |
put file |
上传 |
mkdir dir |
创建远程目录 |
rm file |
删除远程文件 |
exit / bye |
退出 |
示例:
put test.txt
get test.txt
配置方式:
sftpscp(简单文件拷贝)scp file.txt user@ip:/tmp/
ssh-keygen
ssh-copy-id user@ip
SFTP 登录不再需要密码 ✅
编辑:
vim /etc/ssh/sshd_config
添加:
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
目录权限必须正确:
chown root:root /data/sftp
chmod 755 /data/sftp
mkdir /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload
重启:
systemctl restart sshd
✅ 用户只能 SFTP,不能登录系统
sftp user@ip <<EOF
cd /data
put file1.txt
put file2.txt
bye
EOF
lftp sftp://user@ip
支持断点续传、镜像同步:
mirror -R local_dir remote_dir
ssh user@ip
先确认 SSH 是否通
setenforce 0 # 临时关闭测试
sftp -P 2222 user@ip
✅ 第 1 天
sftp 命令put / get✅ 第 2 天
✅ 第 3 天
✅ 第 4 天
man sftpman sshd_config如果你愿意,我可以:
你现在的学习目标是 日常使用、运维、还是企业部署?