ssh: nie można rozpoznać nazwy hosta [nazwa hosta]: nazwa węzła ani nazwa usługi podana lub nieznana

137

Próbuję skonfigurować VPN z Raspberry Pi, a pierwszym krokiem jest uzyskanie możliwości dostępu do sshurządzenia spoza mojej sieci lokalnej. Z jakiegoś powodu okazuje się to niemożliwe i nie mam najmniejszego pojęcia, dlaczego. Kiedy próbuję połączyć się z sshmoim serwerem za pomocą user@hostname, pojawia się błąd:

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known 

Mogę jednak zalogować się do serwera za pomocą,

ssh user@[local IP]

Serwer to Raspberry Pi Model B z najnowszą dystrybucją Raspbian, a maszyna, z którą próbuję się z nim połączyć, to Macbook Pro z systemem Mavericks. sshzostał włączony na Raspberry Pi podczas konfigurowania Raspbian.

Godzinami przeglądałem przepełnienie stosu, próbując sprawdzić, czy ktoś inny miał ten problem i nic nie znalazłem. Każdy sshsamouczek, który znajduję, mówi, że powinienem być w stanie ustawić go na zdalnym komputerze i zalogować się z dowolnego miejsca przy użyciu nazwy hosta, a nigdy nie odniosłem sukcesu.

qaxf6auux
źródło
Oryginalny błąd wskazuje na konkretny problem - czegokolwiek [hostname], czego używasz, nie może zostać rozwiązane z miejsca, w którym go wypróbujesz. Czy nslookup [hostname]zwraca Ci to [local IP], czego oczekujesz?
admdrew
2
nslookup [hostname]wypluwa; Serwer: 8.8.8.8 Adres: 8.8.8.8 # 53 ** serwer nie może znaleźć [nazwa hosta]: NXDOMAIN po uruchomieniu z mojego
Macbooka
2
Dla pewności - podajesz rzeczywistą nazwę hosta [hostname], prawda?
admdrew
Te dane wyjściowe pokazują, że używasz publicznych serwerów DNS Google, które nie mają żadnej wiedzy na temat nazwy hosta, której próbujesz użyć. Jak dokładnie konfigurujesz rekordy DNS dla swojej nazwy hosta?
admdrew
2
Server: 192.168.0.1 Address: 192.168.0.1#53 ** server can't find mrddr: NXDOMAIN
Nakilon,

Odpowiedzi:

29

Niedawno natknąłem się na ten sam problem. Udało mi się połączyć ssh z moim pi w mojej sieci, ale nie spoza mojej sieci domowej.

Miałem już:

  • zainstalowałem i przetestowałem ssh w mojej sieci domowej.
  • Ustaw statyczny adres IP dla mojego pi.
  • Skonfiguruj usługę Dynamic DNS i zainstaluj oprogramowanie na moim pi. Odwołałem się do tych instrukcji dotyczących konfigurowania statycznego adresu IP i istnieje wiele innych zasobów instruktażowych.

Ustawiłem również przekierowanie portu na moim routerze do hostowania witryny internetowej i miałem nawet port przekierowania portu 22 na statyczny adres IP mojego pi dla ssh, ale zostawiłem pole puste, w którym określasz aplikację, dla której przekierowujesz port router. W każdym razie dodałem „ssh” w tym polu i VOILA! Działające połączenie ssh z dowolnego miejsca do mojego pi.

Wypiszę ustawienia przekierowania portu mojego routera.

(ApplicationTextField) _ssh (port zewnętrzny) _22 (port wewnętrzny) _22 (Protocal) _Both (do adresu IP) _192.168.1. ### (włączone) _checkBox

Ustawienia przekierowania portów mogą być jednak różne dla różnych routerów, więc poszukaj wskazówek dotyczących routera.

Teraz, gdy jestem poza moją siecią domową, łączę się z moim pi, wpisując:

ssh pi @ [nazwa hosta]

Wtedy mogę wprowadzić swoje hasło i połączyć się.

ekwaters
źródło
123

Jeśli używasz komputera Mac, ponowne uruchomienie modułu odpowiadającego DNS rozwiązało problem.

sudo killall -HUP mDNSResponder
Mo Bitar
źródło
Musiałem również pingować, nslookup i wykopać domenę. Nie wiem, które z nich pomogły. Może samo czekanie pomogło.
Samizdis
działało również dla mnie .. ten problem zaczął się po ponownym uruchomieniu komputera Mac .. nie wiem, co się zepsuło podczas uruchamiania
murli
2
Ciekawi mnie też, dlaczego to działa ... i co jest przyczyną problemu.
mystic cola
1
Jeśli nslookupdziała, ale ssh / ping / cokolwiek nie działa, to rozwiązuje problem. Dzięki.
Erik B
To zadziałało dla mnie. Dostęp do Maca przez "ping machostname" działał, ale ssh lub git fetch przez ssh nie powiodło się. Po uruchomieniu tego polecenia na Macu zostało to naprawione. Wygląda na błąd na Macu
Luz
96

Miałem ten sam problem z łączeniem się ze zdalnym komputerem. ale udało mi się zalogować jak poniżej:

ssh -p 22 myName@hostname

lub:

ssh -l myName -p 22 hostname
tokhi
źródło
1
wreszcie działa! musi być błąd w składnissh myName@hostname:myPort
Edoardo
@Edoardo Jeśli to błąd, to błąd w użytkowniku; ta składnia nie jest i nigdy nie była poprawna. Powinieneś przejrzeć dokumentację sshpolecenia.
Asteroids With Wings
@AsteroidsWithWings zrobi
Edoardo
12

Jeśli potrzebujesz dostępu do swojej sieci VPN z dowolnego miejsca na świecie, musisz zarejestrować nazwę domeny i wskazać publiczny adres IP Twojej bramy VPN / sieciowej. Możesz również użyć usługi dynamicznego DNS, aby połączyć nazwę hosta z publicznym adresem IP.

Jeśli potrzebujesz tylko ssh z komputera Mac do Raspberry w sieci lokalnej , zrób to: Na komputerze Mac edytuj /etc/hosts. Zakładając, że Raspberry ma nazwę hosta „berry” i adres IP „172.16.0.100”, dodaj jedną linię:

# ip           hostname
172.16.0.100   berry

Teraz: ssh user@berrypowinno działać.

grebneke
źródło
Oprócz powyższego, użyłem "windows-cmd" do poznania adresu IP mojego adresu serwera. Zrobiłem „ping url”, aby uzyskać adres IP. w związku z tym dodano parę adresów IP i adresów URL w „/ etc / hosts”. Doskonale działa tam po (git pull itp.)!
parasrish
9

Miałem ten sam problem, który udało mi się rozwiązać, dodając .local do nazwy hosta, ala ssh [email protected]

horcle_buzz
źródło
To zrobiło to dla mnie. ping $(hostname)działał, ale muszę to zrobić ssh $(hostname).local. Mac jest zwykle świetny… ale kiedy jest do bani, to naprawdę działa…
javadba,
Mam kolejny problem: muszę hadoopzrobić ssh user@hostnamei nie mogę po prostu dodać .localręcznie. Utknąłem
javadba
Dodanie .localzrobiło to dla mnie na Ubuntu 19.10.
prkos
7

W moim przypadku próbowałem ssh w ten sposób

ssh [email protected]:22 

kiedy prawidłowy format to:

ssh [email protected] -p 22 
Pedro
źródło
1
Wow - utknąłem na zawsze z przekierowaniem portów! To jest święty tekst.
frozen 1
@ Pedro, uratowałeś mi życie. To była poprawna odpowiedź.
mesqueeb
To była poprawka dla mojego problemu
Alex Resiga
4

Jeśli twoje polecenie to:

$ ssh -p 1122  path/to/pemfile user@[hostip/hostname]

Napotkasz również ten sam błąd

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known

kiedy przegapisz opcję -i /path/to/pemfilessh

Więc polecenie powinno być:

$ ssh -p 1122 -i path/to/pemfile user@[hostip/hostname]
Karthik v
źródło
Nie korzystałem z opcji pemfile, ale nadal łączyłem się za pomocąssh -p xxxx user@hostname
Yoku
4

Musiałem połączyć się ze zdalnym serwerem Amazon

ssh -i ~/.ssh/test.pem -fN -L 5555:localhost:5678 [email protected]

Otrzymałem następujący błąd.

ssh: Could not resolve hostname <hostname.com>: nodename nor servname provided, or not known

Rozwiązanie dla systemu Mac OSX

Pingowanie hosta rozwiązało problem. Używam systemu Mac OSX Seirra.

ping hostname.com

Teraz problem został rozwiązany. Może połączyć się z serwerem.

Uwaga : wypróbowałem również to rozwiązanie . Ale to nie wyszło. Następnie pingrozwiązano problem.

mythicalcoder
źródło
3

Miałem ten sam problem: adres pokazany w Preferencjach -> Udostępnianie -> Logowanie zdalne nie działał i otrzymałem `` ... nazwa węzła ani nazwa usługi podana lub nieznana ''. Jednak gdy ręcznie zmieniłem ustawienia (w Preferencjach -> Udostępnianie -> Logowanie zdalne -> edytuj) i włączyłem opcję „Użyj dynamicznej globalnej nazwy hosta”, nagle zadziałało.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


źródło
3

Wygląda na to, że niektóre aplikacje nie będą czytać dowiązań symbolicznych /etc/hosts(przynajmniej na macOS), musisz je połączyć.

ln /path/to/hosts_file /etc/hosts

Andrei Vaduva
źródło
3

Dla mnie problemem była literówka w moim ~/.ssh/configpliku. Miałem:

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

Problem był :po host1- nie powinno go tam być. sshnie ostrzega o literówkach w ~/.ssh/configpliku. Gdy nie może znaleźć host1, szuka maszyny lokalnie, nie może jej znaleźć i wyświetla tajemniczy komunikat o błędzie.

jlyonsmith
źródło
2

Przydarzyło mi się to, gdy próbowałem uzyskać dostęp do Github. Problem w tym, że miałem w zwyczaju robić:

git remote add <xyz> ssh:\\[email protected]......

Ale jeśli masz ten błąd z pytania, usuń ssh:\\ może rozwiązać problem. Rozwiązało to dla mnie!

Pamiętaj, że będziesz musiał zrobić git remote remove <xyz>i ponownie dodać zdalny adres URL bez ssh:\\.

Monkpit
źródło
1
Czy naprawdę użyłeś ssh:\\zamiast ssh://?
Radon Rosborough
@RadonRosborough To było jakiś czas temu ... więc, nie jestem pewien. Może mieć! :)
Monkpit
0

Spróbuj tego, biorąc pod uwagę dozwolone porty. Na przykład przechowuj .pemplik w swoim Documentsfolderze.

Aby uzyskać do niego dostęp, wystarczy, że cd [directory]przeniesie Cię do katalogu z przydzielonym plikiem. Możesz najpierw wpisać ls, aby wyświetlić zawartość katalogu, w którym aktualnie się znajdujesz:

ls
cd /Documents
chmod 400 mycertificate.pem
ssh -i "mycertificate.pem" [email protected] -p 80
Karl Richter
źródło
0

Otrzymałem ten błąd, używając pliku inwentaryzacji .yml w ansiblu, który nie został poprawnie sformatowany. W przypadku wielu hostów w grupie każda nazwa hosta musi kończyć się dwukropkiem „:”. W przeciwnym razie ansible uruchamia nazwy hostów razem i generuje ten błąd ssh.

Steve Yount
źródło
0

Miałem ten sam problem po przetestowaniu Visual Studio Code z wtyczką remote-ssh. Podczas konfiguracji zdalnego hosta oprogramowanie zapytało mnie, gdzie przechowywać plik konfiguracyjny. Pomyślałem, że dobrym miejscem jest „.ssh-folder” (system Linux), ponieważ była to zdalna konfiguracja ssh. Okazało się, że to zły pomysł. Następnego dnia po ponownym uruchomieniu komputera nie mogłem zalogować się przez ssh na zdalnym serwerze. Komunikat o błędzie brzmiał „Nie można rozpoznać nazwy hosta: ....... Nazwa lub usługa nieznana”. Stało się tak, że deinstalacja z VSC nie usunęła tego pliku konfiguracyjnego i oczywiście przeszkodziła w zwykłym procesie. „Rm” później problem został rozwiązany (usunąłem ten plik konfiguracyjny).

Jens
źródło