在 Linux 上使用 SFTP(SSH File Transfer Protocol) 主要是借助 OpenSSH 提供的功能,用于安全地传输文件。下面从常用方式、命令示例、常见问题几个方面说明。
大多数 Linux 发行版默认已安装。
ssh -V
如果没有安装:
# Debian / Ubuntu
sudo apt install openssh-client
# CentOS / Rocky / Alma
sudo yum install openssh-clients
systemctl status sshd
sftp 用户名@服务器IP
示例:
sftp user@192.168.1.10
如果是非 22 端口:
sftp -P 2222 user@192.168.1.10
✅ 注意:
-P是大写(与scp不同)
连接成功后,会进入 sftp> 提示符。
pwd # 当前远程目录
lpwd # 当前本地目录
ls # 远程目录
lls # 本地目录
cd /var/www
lcd ~/Downloads
put file.txt
put file.txt /remote/path/file.txt
上传整个目录(递归):
put -r dirname
get file.txt
get file.txt /local/path/file.txt
下载整个目录:
get -r dirname
rm file.txt
rmdir dirname
mkdir dirname
exit
# 或
quit
ssh-keygen -t rsa -b 4096
ssh-copy-id user@192.168.1.10
之后:
sftp user@192.168.1.10
无需输入密码。
sftp -i ~/.ssh/id_rsa user@192.168.1.10
编辑 /etc/ssh/sshd_config:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
⚠️ 注意:
ChrootDirectory 必须是 root 拥有重启 SSH:
systemctl restart sshd
sftp -o GSSAPIAuthentication=no user@host
sftp -P 端口号 user@host
检查:
| 功能 | SFTP | SCP |
|---|---|---|
| 交互式 | ✅ | ❌ |
| 断点续传 | ❌ | ❌ |
| 更安全 | ✅ | ✅ |
| 推荐度 | ⭐⭐⭐⭐ | ⭐⭐ |
如果你需要:
可以告诉我你的具体使用场景,我可以给你更针对性的方案。