温馨提示×

SFTP如何访问Linux目录

小樊
38
2026-07-31 13:13:51
栏目: 智能运维

要通过 SFTP 访问 Linux 目录,常见方式有以下几种,从命令行图形工具都有。下面按使用场景详细说明。


一、使用命令行 SFTP(最常用)

1️⃣ 基本连接方式

sftp 用户名@服务器IP

示例:

sftp root@192.168.1.100

连接成功后会进入 sftp> 交互模式。


2️⃣ 查看和切换 Linux 目录

pwd          # 查看当前远程目录
ls           # 查看当前目录内容
cd /var/www  # 切换到远程 Linux 目录

示例:

sftp> cd /home
sftp> ls

3️⃣ 下载文件 / 目录

get 文件名
get -r 目录名

示例:

get test.txt
get -r /var/log/nginx

4️⃣ 上传文件 / 目录

put 文件名
put -r 目录名

示例:

put localfile.txt
put -r ./config

5️⃣ 本地与远程切换

lpwd        # 查看本地当前目录
lls         # 查看本地文件
lcd ~/Downloads  # 切换本地目录

二、使用非默认端口(如 2222)

sftp -P 2222 user@ip

⚠️ 注意:

  • -P 是大写(和 scp 不一样)

三、使用 SSH 密钥登录(推荐)

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

前提:

# 本地生成密钥
ssh-keygen

# 拷贝公钥到服务器
ssh-copy-id user@ip

四、使用图形化工具(适合新手)

✅ 1. Windows

  • WinSCP
  • FileZilla

配置方式:

  • 协议:SFTP
  • 主机:Linux 服务器 IP
  • 用户名 / 密码 或 私钥

✅ 2. macOS

  • Cyberduck
  • Transmit
  • Finder(部分支持)

五、限制 SFTP 用户只能访问特定目录(常见需求)

1️⃣ 修改 SSH 配置

sudo vim /etc/ssh/sshd_config

添加或修改:

Subsystem sftp internal-sftp

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

2️⃣ 设置目录权限(非常重要)

sudo chown root:root /data/sftp
sudo chmod 755 /data/sftp

用户可写目录:

sudo mkdir /data/sftp/upload
sudo chown sftpuser:sftpuser /data/sftp/upload

六、常见问题

❓ 连接失败

  • 检查 SSH 是否启用 SFTP
  • 检查防火墙(22 端口)
  • 检查用户是否有 shell 权限

❓ 无法写入目录

  • 目录所有者不是当前用户
  • ChrootDirectory 必须是 root 拥有

七、总结

需求 方式
访问 Linux 目录 sftp user@ip
切换目录 cd /path
上传/下载 put / get
免密登录 SSH 密钥
限制目录 ChrootDirectory

如果你愿意,可以告诉我:

  • ✅ 你用的是 Windows / macOS / Linux
  • ✅ 是 访问服务器 还是 搭建 SFTP
  • ✅ 是否要 限制用户目录

我可以给你更精确的配置示例。

0