温馨提示×

SFTP如何切换Linux用户

小樊
42
2026-07-31 13:22:50
栏目: 智能运维

SFTP 中切换 Linux 用户,要分几种常见场景来说,因为 SFTP 本身不支持像 su 那样直接切换用户


一、最常用方式:直接以目标用户登录(推荐)

如果你只是想用另一个用户身份使用 SFTP:

sftp user2@hostname

或指定端口:

sftp -P 22 user2@hostname

前提条件

  • 该用户存在
  • 该用户有登录权限
  • 已配置好密码 / SSH 密钥

二、先 SSH 登录,再切换用户(适合管理员)

如果你当前已经 SSH 登录到服务器:

ssh user1@hostname

然后切换用户:

su - user2

⚠️ 注意

  • su 后不一定能再启动 SFTP(因为不是交互式登录)
  • 适合执行命令,不适合再开 SFTP 会话

三、使用 sudo 以其他用户身份执行 SFTP(不常见)

如果你有 sudo 权限:

sudo -u user2 sftp user2@localhost

或:

sudo su - user2
sftp localhost

⚠️ 这种方式通常用于本地测试,不推荐生产环境。


四、使用 SSH 密钥切换用户(运维常用)

1️⃣ 为目标用户配置 SSH Key

su - user2
mkdir -p ~/.ssh
chmod 700 ~/.ssh

把你的 公钥 加入:

echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

2️⃣ 使用指定私钥登录

sftp -i ~/.ssh/id_rsa user2@hostname

✅ 适合自动化 / 脚本 / CI


五、Chroot SFTP 用户(仅 SFTP,不能 SSH)

如果服务器配置了 SFTP Chroot(/usr/lib/openssh/sftp-server)

  • 用户 不能 shell 登录
  • 只能 SFTP
  • 无法直接切换用户
Subsystem sftp internal-sftp

Match User user2
    ChrootDirectory /data/sftp/user2
    ForceCommand internal-sftp

六、常见误区 ❌

错误理解 说明
SFTP 里执行 su ❌ SFTP 不是 shell
SFTP 登录后切换用户 ❌ 不支持
一个 SFTP 会话多个用户 ❌ 不可能

七、推荐方案总结 ✅

需求 推荐方式
临时用另一个用户 sftp user2@host
管理员操作 SSH + su
自动化 SSH Key
限制用户 SFTP Chroot

如果你能说明:

  • ✅ 是 客户端切换用户 还是 服务器上切换
  • ✅ 是否有 sudo / root 权限
  • ✅ 是否用于 生产 / 自动化

我可以给你一个最合适的具体方案

0