CentOS 6.3. SSH. 在 0.0.0.0 上绑定端口 xxx 失败: 权限被拒绝。

7

CentOS 6.3 最小配置。已安装SSH服务器,端口22。一切正常。 我将端口号22更改为777,并重新启动sshd,在日志中看到:

Jul 26 01:01:07 myserver sshd[1590]: error: Bind to port 777 on 0.0.0.0 failed: Permission denied.
Jul 26 01:01:07 myserver sshd[1590]: error: Bind to port 777 on :: failed: Permission denied.
Jul 26 01:01:07 myserver sshd[1590]: fatal: Cannot bind any address.

/etc/sysconfig/iptables 包含以下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 777 -j ACCEPT

netstat -tulpn | grep :22netstat -tulpn | grep :777 都没有返回任何结果

5个回答

10

Centos默认使用SELinux,而我认为Ubuntu没有(至少我没有看到)。在日志中查找SElinux权限错误。

Translated:

Centos 默认使用 SELinux,而我不认为 Ubuntu 使用(至少我没有见过)。请查看您的日志中是否存在 SElinux 权限错误。


7

4

您可以使用命令sudo setenforce 0来禁用Selinux。

sudo setenforce 0

firewall-cmd --add-port=777/tcp --permanent

firewall-cmd --reload


1

问题在于通知SELinux,但我认为有两种情况:

  1. 如果端口尚未分配给内置服务,则可以尝试以下操作:

    sudo semanage port -a -t ssh_port_t -p tcp 22777
    
  2. 如果端口正在覆盖某些现有服务(不要问我为什么),则需要使用略微不同的语法:

    sudo semanage port --modify -t ssh_port_t -p tcp 777
    
当然,要使这些端口可用,必须通过更新防火墙来实现:
sudo firewall-cmd --add-port=22777/tcp --permanent

或者

sudo firewall-cmd --add-port=777/tcp --permanent

然后:

sudo firewal-cmd --reload

0

777端口专门用于Multiling HTTP,即使没有使用,也无法绑定。如果您尝试绑定到8777端口,它将正常工作。


谢谢,我不知道。这个端口自去年以来在Ubuntu上成功工作。 - indapublic
1
问题是SELinux不允许ssh在另一个端口上运行。在启用SELinux的CentOS上,它也无法在8777端口上运行。 - Christian Ulbrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接