Problém
Na CentOS/RHEL využívá OpenSSH SSH Daemon (sshd) port 22 pro příchozí požadavky na připojení od vzdálených klientů OpenSSH SSH (ssh) a Secure File Transfer (sftp). V některých případech však správci systému dávají přednost použití samostatných portů pro obsluhu činnosti ssh a sftp. V jednom takovém případě se správce systému potýká s níže uvedenou chybou při spouštění služby 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
Řešení
sshd byl nedávno překonfigurován tak, aby používal další a/nebo jiné než výchozí síťové porty. Ve výchozím nastavení je sshd nakonfigurováno tak, aby využívalo síťový port 22. Například:
# 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, který je také ve výchozím nastavení povolen, podobně očekává a vynucuje, aby sshd používal výhradně síťový port 22. Pokud překonfigurujete sshd tak, aby využíval další a/nebo jiný než výchozí port, SELinux zabrání použití portu, což povede k pozorované chybě Permission denied.
1. Identifikujte aktuální SELinux povolené sshd naslouchací porty.
# semanage port -l | grep ssh ssh_port_t tcp 22
2. Nakonfigurujte SELinux tak, aby sshd mohl využívat další port 2222.
# semanage port -a -t ssh_port_t -p tcp 2222
3. Ověřte nové SELinux povolené sshd naslouchací porty.
# semanage port -l | grep ssh ssh_port_t tcp 2222,22
4. Restartujte službu sshd, aby se změny projevily.
Pro CentOS/RHEL 7/8:
# systemctl restart sshd # systemctl status sshd
Pro CentOS/RHEL 5/6:
# service sshd restart # service sshd status