温馨提示×

SFTP在Linux上怎么用

小樊
41
2026-08-15 18:47:28
栏目: 智能运维

SFTP(SSH File Transfer Protocol)在 Linux 上通常直接用命令行即可,不需要额外安装服务端(OpenSSH 自带)。下面按最常用场景给你一个完整说明。


一、SFTP 基本用法(命令行)

1️⃣ 连接到远程服务器

sftp user@remote_ip

示例:

sftp root@192.168.1.100

首次连接会提示:

Are you sure you want to continue connecting (yes/no)?

输入 yes 即可。


2️⃣ 常用 SFTP 命令(进入 sftp> 后)

操作 命令
查看远程目录 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

3️⃣ 示例:上传和下载

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

二、非交互式 SFTP(脚本/自动化)

1️⃣ 使用 -b 批量执行

sftp -b batch.txt user@remote_ip

batch.txt 内容:

cd /data
put file.txt
get result.log
bye

2️⃣ 使用 SSH 密钥(免密)

ssh-keygen -t rsa
ssh-copy-id user@remote_ip
sftp user@remote_ip

三、Linux 上开启 SFTP 服务(服务端)

大多数 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 启用,无需额外配置。


四、限制用户只能使用 SFTP(安全)

编辑:

vim /etc/ssh/sshd_config

添加:

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

然后:

systemctl restart sshd

五、图形化工具(可选)

  • FileZilla
  • WinSCP(Windows)
  • 命令行 + rsync(推荐大文件)

六、常见问题

❓ 连接失败

Connection refused
  • 检查 sshd 是否启动
  • 检查防火墙:
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

❓ 权限不足

  • 确认用户对目录有读写权限
  • ChrootDirectory 必须是 root 拥有

七、总结一句话

Linux 上 SFTP 直接用 sftp user@ip,上传用 put,下载用 get,服务端靠 sshd。

如果你告诉我:

  • ✅ 是 本地连远程 还是 服务器配置
  • ✅ 是否要 自动化 / 免密 / 限制目录

我可以给你更精确的配置方案。

0