Le problème
Sur CentOS/RHEL, le démon OpenSSH SSH (sshd) utilise le port 22 pour les demandes de connexion entrantes des clients distants OpenSSH SSH (ssh) et Secure File Transfer (sftp). Dans certains cas, cependant, les administrateurs système préfèrent utiliser des ports séparés pour gérer l'activité ssh et sftp. Dans un tel cas, l'administrateur système est confronté à l'erreur ci-dessous lors du démarrage du service 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 solution
sshd a été récemment reconfiguré pour utiliser des ports réseau supplémentaires et/ou non par défaut. Par défaut, sshd est configuré pour utiliser le port réseau 22. Par exemple :
# 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, également activé par défaut, attend et applique de la même manière sshd pour utiliser exclusivement le port réseau 22. Si vous reconfigurez sshd pour utiliser un port supplémentaire et/ou un port autre que celui par défaut, SELinux empêche l'utilisation du port entraînant l'erreur d'autorisation refusée observée.
1. Identifiez les ports d'écoute sshd actuellement autorisés par SELinux.
# semanage port -l | grep ssh ssh_port_t tcp 22
2. Configurez SELinux pour permettre à sshd d'utiliser le port supplémentaire 2222.
# semanage port -a -t ssh_port_t -p tcp 2222
3. Vérifiez les nouveaux ports d'écoute sshd autorisés par SELinux.
# semanage port -l | grep ssh ssh_port_t tcp 2222,22
4. Redémarrez le service sshd pour que les modifications prennent effet.
Pour CentOS/RHEL 7/8 :
# systemctl restart sshd # systemctl status sshd
Pour CentOS/RHEL 5/6 :
# service sshd restart # service sshd status