Das Problem
Unter CentOS/RHEL verwendet der OpenSSH SSH-Daemon (sshd) Port 22 für eingehende Verbindungsanforderungen von entfernten OpenSSH SSH (ssh)- und Secure File Transfer (sftp)-Clients. In einigen Fällen ziehen es Systemadministratoren jedoch vor, separate Ports zu verwenden, um ssh- und sftp-Aktivitäten zu bedienen. In einem solchen Fall wird der Systemadministrator beim Starten des sshd-Dienstes mit dem folgenden Fehler konfrontiert
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
Die Lösung
sshd wurde kürzlich neu konfiguriert, um zusätzliche und/oder nicht standardmäßige Netzwerkports zu verwenden. Standardmäßig ist sshd so konfiguriert, dass es den Netzwerkport 22 verwendet. Zum Beispiel:
# 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, das ebenfalls standardmäßig aktiviert ist, erwartet und erzwingt in ähnlicher Weise, dass sshd ausschließlich den Netzwerkport 22 verwendet. Wenn Sie sshd neu konfigurieren, um einen zusätzlichen und/oder einen nicht standardmäßigen Port zu verwenden, verhindert SELinux die Verwendung des Ports, was zu dem beobachteten Permission denied-Fehler führt.
1. Identifizieren Sie die aktuell von SELinux zugelassenen sshd-Abhörports.
# semanage port -l | grep ssh ssh_port_t tcp 22
2. Konfigurieren Sie SELinux so, dass sshd den zusätzlichen Port 2222 verwenden kann.
# semanage port -a -t ssh_port_t -p tcp 2222
3. Überprüfen Sie neue SELinux-zugelassene sshd-Abhörports.
# semanage port -l | grep ssh ssh_port_t tcp 2222,22
4. Starten Sie den sshd-Dienst neu, damit die Änderungen wirksam werden.
Für CentOS/RHEL 7/8:
# systemctl restart sshd # systemctl status sshd
Für CentOS/RHEL 5/6:
# service sshd restart # service sshd status