Usługa sshd nie uruchamia się

27

Nie jestem pewien, dlaczego się nie uruchamia lub dlaczego uniemożliwia mi połączenie, pojawia się ten błąd:

sshd.service - OpenSSH Daemon
    Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: failed (Result: start-limit) since Wed 2013-09-11 08:45:13 BST; 1min 21s ago
  Process: 701 ExecStart=/usr/bin/sshd -D (code=exited, status=1/FAILURE)

Sep 11 08:45:13 alarmpi systemd[1]: sshd.service: main process exited, code=exited, status=1/FAILURE
Sep 11 08:45:13 alarmpi systemd[1]: Unit sshd.service entered failed state.
Sep 11 08:45:13 alarmpi systemd[1]: sshd.service holdoff time over, scheduling restart.
Sep 11 08:45:13 alarmpi systemd[1]: Stopping OpenSSH Daemon...
Sep 11 08:45:13 alarmpi systemd[1]: Starting OpenSSH Daemon...
Sep 11 08:45:13 alarmpi systemd[1]: sshd.service start request repeated too quickly,    refusing to start.
Sep 11 08:45:13 alarmpi systemd[1]: Failed to start OpenSSH Daemon.
Sep 11 08:45:13 alarmpi systemd[1]: Unit sshd.service entered failed state.

Za radą #amrith uruchomiłem sshd -t, który wskazał, że klucz nie został wygenerowany. Wygenerowałem to za pomocą ssh-keygen -A na podstawie porad udzielonych na tym forum, a następnie status systemctl pokazał, że nadal nie uruchamiam demona. Podałem błąd poniżej, niestety nie wiem, jak ponownie uruchomić sshd -t nie wyświetla teraz żadnych wiadomości.

sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: inactive (dead)

Sep 11 12:04:42 alarmpi systemd[1]: Started OpenSSH Daemon.
Sep 11 12:04:42 alarmpi sshd[289]: fatal: Cannot bind any address.
Sep 11 12:04:42 alarmpi systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
Sep 11 12:04:42 alarmpi systemd[1]: Unit sshd.service entered failed state.
Sep 11 12:04:42 alarmpi systemd[1]: sshd.service holdoff time over, scheduling restart.
Sep 11 12:04:42 alarmpi systemd[1]: Stopping OpenSSH Daemon...
Sep 11 12:04:42 alarmpi systemd[1]: Starting OpenSSH Daemon...
Sep 11 12:04:42 alarmpi systemd[1]: sshd.service start request repeated too quickly, refusing to start.
Sep 11 12:04:42 alarmpi systemd[1]: Failed to start OpenSSH Daemon.
Sep 11 12:04:42 alarmpi systemd[1]: Unit sshd.service entered failed state.
aCoolBean
źródło

Odpowiedzi:

31

Spróbuj sshd -t (tryb testowy sshd). Może wskazywać na przyczynę niepowodzenia.

Zapoznaj się z dokumentacją trybu testowego tutaj .

amrith
źródło
15

Problem w naszym przypadku polegał na tym, że korzystamy z niestandardowego portu dla SSH. SELinux może ograniczyć, które porty mogą być używane przez usługę. Najwyraźniej czasami się myli i zapomina, że ​​pozwoliliśmy na ten port?

Musieliśmy wydać następujące polecenie, aby dodać nasz port (22222) do listy dostępnych portów

semanage port -a -t ssh_port_t -p tcp 22222

Odniesienie: http://sharadchhetri.com/2014/10/15/centos-7-rhel-7-change-openssh-port-number-selinux-enabled/

Tommy McNeely
źródło
8

Cóż, jeśli zmienisz numer portu SSH, musisz zrobić jeszcze kilka rzeczy w CentOS 7.

Zmień plik ssdh_config do edycji portu SSH

vi /etc/ssh/sshd_config

Na przykład zmień na: Port 2323

SELINUX zezwala tylko na port 22 dla ssh. Dodaj nowy kontekst portu 2323. Jeśli nie został zainstalowany, wykonaj następujące czynności

yum -y install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 2323

Sprawdź kontekst portu dla ssh

semanage port -l | grep ssh

Uruchom ponownie usługę SSHD

systemctl restart sshd.service

Dodaj port do zapory

firewall-cmd --permanent --zone=public --add-port=2323/tcp

Załaduj ponownie zaporę ogniową

firewall-cmd --reload

Sprawdź słuchanie

ss -tnlp|grep ssh

Spróbuj połączyć ponownie przez ssh

ssh root@<ipaddr> -p 2323
Slipstream
źródło
3

Miałem również ten problem, ale go rozwiązałem. Moja konfiguracja jest poniżej.

PermitRootLogin no
port 22
MaxAuthTries 3
MaxSessions 2
AllowUsers ravikanth
AddressFamily any
ListenAddress 192.168.1.23

Usługa nie uruchomiła się, więc właśnie skomentowałem ostatnią linię ( #ListenAddress 192.168.1.23), a następnie mój serwer uruchomił się pomyślnie.

Uwaga: wyłączyłem firewall (iptables) i SELinux.

ravikanth
źródło
2

Możesz spróbować użyć następującego ustawienia:

RestartSec=5s

To zmusiłoby twoją aplikację do uśpienia na 5 sekund przed próbą ponownego uruchomienia. Możesz oczywiście zmienić liczbę ustawień.

Zobacz tutaj szczegółowe informacje:

Boris Epstein
źródło
Poparłem tę odpowiedź, ponieważ zawiera ona przydatne informacje o tym, jak rozwiązać problem, gdy problem jest w systemd, a nie faktyczną usługę (sshd w przypadku OP). Miałem usługi z restartem = zawsze kończy się niepowodzeniem i nie jestem restartowany kilka razy. Ta odpowiedź może faktycznie rozwiązać ten problem z systemd. (Chociaż nie jest to bezpośrednio związane z pytaniem PO).
MattBianco,
1

Cannot bind any address

Jeśli spróbuje się połączyć z portem (np. Domyślnie: 22) poniżej 1024, musi to zrobić w celu uzyskania uprawnień roota. Czy działałeś service sshd startczy coś takiego jako root? Spróbuj edytować plik konfiguracyjny sshd.conf, ustaw adres wiązania na port większy niż 1024 (np. 1122) i uruchom go jako prosty użytkownik!

David Lakatos
źródło
1

Miałem ten sam problem i najłatwiejszym rozwiązaniem było usunięcie go opensshi ponowne zainstalowanie.

 yum remove openssh

i wtedy:

 yum install openssh openssh-server openssh-clients

możesz rozpocząć sshdobsługę:

 service sshd start
Ali Hashemi
źródło
0

Miałem ten sam problem. Właśnie wyłączyłem SELinux!

tquang
źródło
-1

Po prostu wykonaj to,

mkdir -p /var/run/sshd

i

/usr/sbin/sshd -ddd

To powinno rozwiązać problem.

Aman Juman
źródło
1
Dlaczego miałoby to być rozwiązanie problemu, który miał PO?
HBruijn
1
Mam podobny problem w OpenVZ. Postanowiłem to naprawić problem.
Aman Juman