You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

反向SSH端口映射绑定本地端口提示权限拒绝的问题求助

反向SSH端口映射绑定本地端口提示权限拒绝的问题求助

看起来你遇到的是Fedora升级后反向SSH端口映射的权限问题,我帮你梳理几个最可能的原因和对应的解决办法,都是Fedora 38这类新系统常见的坑:

1. 端口范围的权限限制

Linux系统有个默认规则:只有root用户能绑定1-1023之间的端口。如果你指定的<port>刚好在这个区间里,普通用户执行反向映射时必然会报错Permission denied

  • 快速解决:换成1024以上的端口(比如1025、2222这类),重新运行远程端的命令:
    ssh -N -R :<1024以上端口>:localhost:22 <user>@<local_system>
    
  • 如果必须用低端口:要么用root用户执行命令(不推荐,安全风险高),要么给ssh程序添加绑定低端口的权限:
    sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ssh
    
    注意:这个操作会让所有用户都能通过ssh绑定低端口,需要根据你的安全需求权衡。

2. SELinux安全策略拦截

Fedora默认开启SELinux强制模式,升级后的默认策略可能阻止了sshd绑定你指定的端口。

  • 先验证是不是SELinux的问题:临时关闭SELinux测试
    sudo setenforce 0
    
    然后重新运行远程的反向映射命令,如果能正常工作,就确定是SELinux的问题了。
  • 永久解决:添加SELinux规则允许sshd绑定目标端口
    sudo semanage port -a -t ssh_port_t -p tcp <你的端口号>
    
    执行完后把SELinux切回强制模式:
    sudo setenforce 1
    
    再测试反向映射就能正常工作了。

3. sshd配置参数变更

Fedora 38的sshd默认配置可能和旧版本有差异,比如禁用了TCP转发或者限制了允许的端口:

  1. 编辑/etc/ssh/sshd_config文件,检查以下关键参数:
    • AllowTcpForwarding:确保设置为yes(默认是yes,但可能被自定义配置修改);
    • PermitOpen:如果这个参数存在,检查是否只允许访问特定端口,如果有,需要把你的目标端口添加进去,或者直接注释掉这个参数;
    • 检查有没有针对你的用户设置Match User段,里面是否限制了端口转发权限,如果有,需要调整对应的规则。
  2. 修改配置后,重启sshd服务生效:
sudo systemctl restart sshd

之后再重新测试反向映射即可。

备注:内容来源于stack exchange,提问作者Richard T

火山引擎 最新活动