6

CentOS 6.3 最低配置。已安装 SSH 服务器,端口 22。一切正常。我更改了 777 上的 22 端口并重新启动 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

网络统计-tulpn | grep :22netstat -tulpn | grep :777什么也不返回

4

5 回答 5

10

Centos 默认使用 SELinux,我不认为 Ubuntu 会这样做(或者至少我没见过)。在您的日志中查看 SElinux 权限错误。

于 2012-07-30T00:37:04.000 回答
5

SELinux 不允许 sshd 在默认安装的 CentOS 6.3 上运行在另一个端口上。关注 -> https://blog.tinned-software.net/change-ssh-port-in-centos-with-selinux/

  • 在你的防火墙上挖一个洞(你已经这样做了)
  • 为 SELinux 添加规则以允许 sshd 在端口 777 上运行:sudo semanage port -a -t ssh_port_t -p tcp 777
于 2018-04-24T21:13:34.703 回答
2

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

须藤 setenforce 0

防火墙-cmd --add-port=777/tcp --permanent

防火墙-cmd --reload

于 2021-08-01T07:38:39.910 回答
0

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

于 2012-07-26T15:45:18.267 回答
0

问题是通知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
于 2021-11-04T16:05:50.577 回答