Administruję środowiskiem sieciowym, w którym użytkownicy uwierzytelniają się za pośrednictwem NIS. Wszystkie maszyny mogą być używane do SSH do serwera, ale jeden. Na danym komputerze dostaję wiadomość
ssh: connect to host servername port 22: Connection refused
Porównałem dane strace
wyjściowe z maszyny, o której mowa, i maszyny, która może poprawnie SSH do serwera.
Okazuje się, że maszyna, która nie może SSH połączyć się z serwerem, nie konsultuje się, /etc/hosts
podczas gdy maszyna, która potrafi SSH poprawnie. Oba komputery /etc/hosts
skonfigurowały nazwę serwera i adres IP. W końcu maszyna, która się nie konsultuje /etc/hosts
, próbuje połączyć się z 127.0.0.1
(localhost) i kończy się niepowodzeniem z powyższym komunikatem. Co może być tego przyczyną?
Dodatkowe informacje:
- Serwer, do którego próbuję włączyć SSH, działa również jako serwer nazw i oba komputery sprawdzają go podczas próby SSH.
- Komputer, który nie może połączyć się z serwerem SSH, może poprawnie połączyć się z innym serwerem, gdy to zrobię
ssh machinename
.strace
Dzienniki pokazują, że komputer sprawdza serwer nazw (tym razem z powodzeniem) i udaje mu się poprawnie rozwiązać nazwę zdalnego komputera i połączyć się z nim.
EDYCJA: Z przyjemnością przedstawię wszelkie dodatkowe informacje, które mogą pomóc w rozwiązaniu tego problemu.
Odpowiedzi:
Wydaje mi się, że problematyczny host nie ma poprawnie skonfigurowanego
nsswitch.conf
.hosts
Linia/etc/nsswitch.conf
powinna wyglądać mniej więcej tak:Jednak dokładna zawartość może się różnić w zależności od środowiska. Powinieneś porównać z działającymi hostami i odpowiednio wprowadzić zmiany.
źródło