You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LEMP环境下SFTP连接超时及Nginx权限报错问题求助

解决SFTP连接超时+Nginx access forbidden问题

看起来你碰到的问题是Nginx规则拦截了请求,同时系统防火墙可能也有额外限制,咱们一步步来排查解决:

1. 先确认Nginx的IP放行规则顺序是否正确

你在/etc/nginx/sites-enabled里配置的IP放行,规则顺序直接影响生效结果。比如如果你的配置是先写deny all再写allow,那allow规则根本不会生效,Nginx会直接拒绝所有请求:

# 错误示例:deny在allow前面,规则不生效
location / {
    deny all;
    allow 123.45.67.89; # 你同事的IP
}

正确的写法应该是先允许目标IP,再拒绝其他所有:

# 正确顺序
location / {
    allow 123.45.67.89;
    deny all;
}

修改后记得重启Nginx让配置生效:sudo systemctl restart nginx

2. 检查系统防火墙是否放行SFTP端口

虽然你在Nginx里放行了IP,但服务器的系统防火墙(比如ufw、iptables)可能没开SFTP对应的端口。SFTP默认用22端口,咱们来确认:

  • 如果用ufw防火墙,执行sudo ufw status,查看是否有22/tcp的允许规则。如果没有,执行sudo ufw allow 22/tcp开放端口
  • 如果用iptables,执行sudo iptables -L -n,检查INPUT链里是否有ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22的规则。如果没有,添加规则:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

你本地测试能正常连接,大概率是因为你处于服务器内网或者防火墙信任的IP段,而同事的家庭IP不在防火墙允许列表里,所以才会出现超时。

3. 验证同事的公网IP是否正确

印度家庭宽带的IP大多是动态分配的,可能你之前记录的IP已经变更了。可以让同事通过本地网络设置或者公网IP查询工具获取当前的真实公网IP,对比你Nginx配置里放行的IP是否一致。如果不一致,更新Nginx的allow规则后重启服务。

4. 检查SFTP用户的目录权限

如果Nginx配置了SFTP的根目录,要确保你同事的SFTP用户对该目录有足够的读写权限。比如根目录是/var/www/sftp,执行以下命令调整权限:

sudo chown -R your-colleague-username:your-colleague-username /var/www/sftp
sudo chmod -R 755 /var/www/sftp

目录权限不足也可能触发Nginx的access forbidden错误。

5. 结合access.log排查请求细节

打开Nginx的access.log(一般路径是/var/log/nginx/access.log),找到错误日志里对应的请求ID(也就是*70),查看这条请求的真实IP、请求路径等信息,确认是不是同事的IP,有没有被Nginx的其他规则意外拦截。

按照这几步排查下来,应该能解决连接超时和权限禁止的问题。

内容的提问来源于stack exchange,提问作者Head

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:16:23