在 Linux 里,SFTP 本身并不能“提升权限”,它只是文件传输协议,权限取决于你登录的系统用户以及文件/目录的权限。下面分几种常见情况说明“如何提权限”。
sftp root@192.168.1.10
⚠️ 注意:
/etc/ssh/sshd_configPermitRootLogin yes
然后重启 ssh:
systemctl restart sshd
SFTP 不支持 sudo,例如:
sftp sudo@host # ❌ 不行
✅ 正确做法:
ssh user@host
sudo su -
sftp 或 scp 传文件如果你是普通用户,但文件权限不够:
chmod 777 file
chown user:user file
chmod 755 /data
chown -R user:user /data
ssh user@host
sudo cp /etc/shadow /tmp/shadow
sudo chmod 644 /tmp/shadow
然后:
sftp user@host
get /tmp/shadow
rsync -avz --rsync-path="sudo rsync" user@host:/etc/ /local/
如果 SFTP 被限制在 chroot:
Match User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
这种用户永远无法提权,只能访问 /sftp
SFTP 不能提权,只能换权限更高的用户,或先 SSH 提权再传文件。
如果你能说具体场景(比如:想传 /etc、/var、docker 文件),我可以给你最安全的方法。