SFTP(SSH File Transfer Protocol)在 Linux 上通常直接用命令行即可,不需要额外安装服务端(OpenSSH 自带)。下面按最常用场景给你一个完整说明。
sftp user@remote_ip
示例:
sftp root@192.168.1.100
首次连接会提示:
Are you sure you want to continue connecting (yes/no)?
输入 yes 即可。
| 操作 | 命令 |
|---|---|
| 查看远程目录 | ls |
| 查看本地目录 | lls |
| 切换远程目录 | cd /path |
| 切换本地目录 | lcd /path |
| 上传文件 | put file.txt |
| 上传目录 | put -r dir/ |
| 下载文件 | get file.txt |
| 下载目录 | get -r dir/ |
| 创建远程目录 | mkdir dir |
| 删除远程文件 | rm file |
| 删除远程目录 | rmdir dir |
| 退出 | exit / bye |
sftp user@192.168.1.100
sftp> lcd ~/local_dir
sftp> cd /var/www/html
sftp> put index.html
sftp> get config.conf
sftp> exit
-b 批量执行sftp -b batch.txt user@remote_ip
batch.txt 内容:
cd /data
put file.txt
get result.log
bye
ssh-keygen -t rsa
ssh-copy-id user@remote_ip
sftp user@remote_ip
大多数 Linux 默认已安装:
systemctl status sshd
如未安装:
# CentOS / Rocky
yum install -y openssh-server
# Ubuntu / Debian
apt install -y openssh-server
启动服务:
systemctl enable sshd
systemctl start sshd
✅ SFTP 默认随 SSH 启用,无需额外配置。
编辑:
vim /etc/ssh/sshd_config
添加:
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
然后:
systemctl restart sshd
Connection refused
sshd 是否启动firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
ChrootDirectory 必须是 root 拥有Linux 上 SFTP 直接用
sftp user@ip,上传用put,下载用get,服务端靠 sshd。
如果你告诉我:
我可以给你更精确的配置方案。