温馨提示×

如何在Linux上使用SFTP

小樊
35
2026-08-15 18:30:20
栏目: 智能运维

在 Linux 上使用 SFTP(SSH File Transfer Protocol) 主要是借助 OpenSSH 提供的功能,用于安全地传输文件。下面从常用方式、命令示例、常见问题几个方面说明。


一、基本前提

1. 确认已安装 SSH

大多数 Linux 发行版默认已安装。

ssh -V

如果没有安装:

# Debian / Ubuntu
sudo apt install openssh-client

# CentOS / Rocky / Alma
sudo yum install openssh-clients

2. 服务器需开启 SSH(22 端口)

systemctl status sshd

二、使用 SFTP 连接服务器(最常用)

基本连接方式

sftp 用户名@服务器IP

示例:

sftp user@192.168.1.10

如果是非 22 端口:

sftp -P 2222 user@192.168.1.10

✅ 注意:
-P 是大写(与 scp 不同)


三、SFTP 交互式常用命令

连接成功后,会进入 sftp> 提示符。

1. 查看目录

pwd      # 当前远程目录
lpwd     # 当前本地目录

ls       # 远程目录
lls      # 本地目录

2. 切换目录

cd /var/www
lcd ~/Downloads

3. 上传文件

put file.txt
put file.txt /remote/path/file.txt

上传整个目录(递归):

put -r dirname

4. 下载文件

get file.txt
get file.txt /local/path/file.txt

下载整个目录:

get -r dirname

5. 删除文件 / 目录

rm file.txt
rmdir dirname

6. 创建目录

mkdir dirname

7. 退出

exit
# 或
quit

四、免密登录(推荐)

1. 生成密钥

ssh-keygen -t rsa -b 4096

2. 复制公钥到服务器

ssh-copy-id user@192.168.1.10

之后:

sftp user@192.168.1.10

无需输入密码。


五、使用密钥指定 SFTP

sftp -i ~/.ssh/id_rsa user@192.168.1.10

六、限制用户只能使用 SFTP(常用于服务器安全)

编辑 /etc/ssh/sshd_config

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

⚠️ 注意:

  • ChrootDirectory 必须是 root 拥有
  • 用户不能对其有写权限

重启 SSH:

systemctl restart sshd

七、常见问题

1. 连接慢

sftp -o GSSAPIAuthentication=no user@host

2. 端口被挡

sftp -P 端口号 user@host

3. 权限不足

检查:

  • 本地文件权限
  • 远程目录权限
  • SELinux(CentOS)

八、与 SCP 的区别(简要)

功能 SFTP SCP
交互式
断点续传
更安全
推荐度 ⭐⭐⭐⭐ ⭐⭐

如果你需要:

  • 命令行自动化脚本
  • 使用 WinSCP / FileZilla
  • SFTP 日志审计
  • Docker / Kubernetes 环境

可以告诉我你的具体使用场景,我可以给你更针对性的方案。

0