Google Cloud Platform VM使用FileZilla SFTP传输文件遇权限拒绝问题求助
解决GCP VM SFTP权限拒绝(非root密钥登录)的方案
方法1:使用现有非root用户操作,调整目标目录权限
如果不需要root权限,直接用当前SSH对应的用户完成传输:
- 先确认目标目录的权限,比如要传输到
/var/www/html,执行以下命令给该目录添加当前用户的读写权限:sudo chown -R $USER:$USER /var/www/html sudo chmod -R 755 /var/www/html - 之后在FileZilla中用当前非root用户登录SFTP,直接传输文件到该目录即可。
方法2:允许root用户的SFTP登录(不推荐,仅临时场景使用)
如果必须通过root操作,可修改SSH配置开启root登录:
- 登录VM,编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config - 找到
PermitRootLogin项,修改为:
(若设置为PermitRootLogin yesprohibit-password也可,只要不是no) - 重启SSH服务使配置生效:
sudo systemctl restart sshd - 为root设置密码(GCP默认root无密码):
sudo passwd root - 可选:将当前用户的SSH密钥添加到root的授权列表,避免密码登录:
sudo cp ~/.ssh/authorized_keys /root/.ssh/ sudo chown root:root /root/.ssh/authorized_keys sudo chmod 600 /root/.ssh/authorized_keys
完成后即可在FileZilla中用root用户登录SFTP。
方法3:通过sudo提升权限传输(安全推荐方案)
无需开启root登录,通过配置让SFTP操作自动以root权限执行:
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config - 修改或添加Subsystem行:
Subsystem sftp sudo /usr/lib/openssh/sftp-server - 重启SSH服务:
sudo systemctl restart sshd - 给当前用户添加无需密码执行
sftp-server的权限,编辑sudoers文件:
添加以下内容(替换sudo visudoyour_username为实际用户名):your_username ALL=(ALL) NOPASSWD: /usr/lib/openssh/sftp-server - 之后在FileZilla中用当前用户登录SFTP,所有文件操作都会自动以root权限执行,避免权限拒绝问题。
内容的提问来源于stack exchange,提问作者AmIAProgrammer
相关产品推荐
相关产品推荐

