El problema
En CentOS/RHEL, OpenSSH SSH Daemon (sshd) utiliza el puerto 22 para las solicitudes de conexión entrantes de clientes remotos OpenSSH SSH (ssh) y Secure File Transfer (sftp). Sin embargo, en algunos casos, los administradores del sistema prefieren utilizar puertos separados para dar servicio a la actividad de ssh y sftp. En uno de esos casos, el administrador del sistema se enfrenta al siguiente error al iniciar el servicio sshd
sshd[13798]: error: Bind to port 2222 on 0.0.0.0 failed: Permission denied. sshd[13798]: error: Bind to port 2222 on :: failed: Permission denied. sshd[13798]: Server listening on 0.0.0.0 port 22. sshd[13798]: Server listening on :: port 22
La solución
sshd se reconfiguró recientemente para usar puertos de red adicionales y/o no predeterminados. De forma predeterminada, sshd está configurado para utilizar el puerto de red 22. Por ejemplo:
# grep ssh /etc/services ssh 22/tcp # The Secure Shell (SSH) Protocol ssh 22/udp # The Secure Shell (SSH) Protocol ssh 22/sctp # SSH
SELinux, también habilitado de forma predeterminada, espera y obliga de manera similar a sshd a utilizar el puerto de red 22 exclusivamente. Si reconfigura sshd para utilizar un puerto adicional y/o no predeterminado, SELinux evita el uso del puerto, lo que genera el error Permiso denegado observado.
1. Identifique los puertos de escucha sshd permitidos actualmente por SELinux.
# semanage port -l | grep ssh ssh_port_t tcp 22
2. Configure SELinux para permitir que sshd utilice el puerto adicional 2222.
# semanage port -a -t ssh_port_t -p tcp 2222
3. Verifique los nuevos puertos de escucha sshd permitidos por SELinux.
# semanage port -l | grep ssh ssh_port_t tcp 2222,22
4. Reinicie el servicio sshd para que los cambios surtan efecto.
Para CentOS/RHEL 7/8:
# systemctl restart sshd # systemctl status sshd
Para CentOS/RHEL 5/6:
# service sshd restart # service sshd status