"ssh: Could not resolve hostname": Ursachen und Lösungen

SSH konnte den eingegebenen Namen nicht in eine IP-Adresse umsetzen, es wurde also gar keine Verbindung versucht, und der Server ist nicht beteiligt. Übliche Gründe sind ein Tippfehler, ein in ~/.ssh/config fehlender Alias, ein als host:22 geschriebener Port oder ein DNS-Problem. Führen Sie ssh -G name | grep '^hostname ' aus, um zu sehen, welchen Namen SSH nachschlägt, und testen Sie diesen Namen dann mit dem Resolver Ihres Systems.

In Wardterm sind Adresse, Port und Benutzer getrennte Felder eines gespeicherten Servers, ein Port landet also nie im Hostnamen. Zeigen

Aktualisiert am . Die Meldungen wurden mit OpenSSH 10.3 unter macOS und OpenSSH 10.0 unter Debian 13 nachgestellt, auch in einem Container ohne Netzwerk.

Die Meldung auf jedem System

Der erste Teil kommt von SSH. Der Teil nach dem Doppelpunkt kommt vom Resolver Ihres Systems.

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

Das ist macOS. Unter Linux lautet derselbe Fehler:

ssh: Could not resolve hostname server: Name or service not known

Linux kennt auch eine dritte Form, die häufig ist, wenn das Netz oder der DNS-Server ausgefallen ist:

ssh: Could not resolve hostname server: Temporary failure in name resolution

Das Wort zwischen hostname und dem Doppelpunkt ist genau das, was SSH nachschlagen wollte. Lesen Sie es zuerst, denn es zeigt oft den Fehler.

Ursache 1: ein Tippfehler oder ein Alias, den SSH nicht sieht

ssh -G server | grep -E '^(hostname|port|user) '

Das gibt aus, was SSH verwenden würde, ohne sich zu verbinden. Haben Sie einen Alias aus Ihrer Konfiguration erwartet und hostname wiederholt nur Ihre Eingabe, hat kein Host-Block gepasst. Prüfen Sie Folgendes:

  • Der Alias ist in ~/.ssh/config genauso geschrieben.
  • Der Block hat eine Zeile HostName, und diese hat keinen Tippfehler. Ein falscher Wert dort erscheint in der Fehlermeldung anstelle des Alias.
  • Sie sind derselbe Benutzer. sudo ssh server liest die Konfiguration von Root, nicht Ihre.

Wie Aliase und Host-Blöcke zugeordnet werden, zeigen die Beispiele für die ssh-config-Datei.

Ursache 2: Der Port oder eine URL ist Teil des Namens

SSH liest weder host:port noch eine Webadresse. Diese beiden scheitern mit demselben Fehler, und der Fehler zeigt den ganzen String als Namen:

ssh user@example.com:22
ssh https://example.com
ssh: Could not resolve hostname example.com:22: nodename nor servname provided, or not known

Nutzen Sie eine dieser Formen:

ssh -p 2222 user@example.com
ssh ssh://user@example.com:2222

Ein verirrtes Leerzeichen ergibt eine andere Meldung, hostname contains invalid characters. Prüfen Sie auf eingefügte Leerzeichen oder Zeilenumbrüche.

Ursache 3: DNS

Prüfen Sie den Namen außerhalb von SSH, mit dem Resolver, den SSH verwendet.

Unter macOS:

dscacheutil -q host -a name example.com

Unter Linux:

getent hosts example.com

Leere Ausgabe heißt, dieser Rechner kann den Namen nicht auflösen. Fragen Sie dann direkt einen öffentlichen Resolver:

dig +short example.com @1.1.1.1
  • Eine Antwort vom öffentlichen Resolver, aber nicht von Ihrem System: Ihre lokale DNS-Einrichtung oder Ihr Cache ist schuld. Leeren Sie ihn, unter macOS mit sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder und unter systemd-Linux mit resolvectl flush-caches, oder wechseln Sie den DNS-Server.
  • Nirgends eine Antwort: Der Eintrag existiert nicht. Es kann ein neuer Eintrag sein, der sich noch nicht verbreitet hat, ein entfernter oder ein Tippfehler in der Zone.

Für einen Namen, den nur Sie verwenden, etwa einen Rechner zu Hause, können Sie DNS umgehen: Tragen Sie eine Zeile in /etc/hosts ein, oder schreiben Sie die Adresse in die Zeile HostName Ihrer ~/.ssh/config.

Um weiterzuarbeiten, während Sie DNS klären, verbinden Sie sich per Adresse. Bedenken Sie, dass der Host-Schlüssel pro Name gespeichert wird, SSH Sie also erneut um Bestätigung bitten kann:

ssh user@203.0.113.10

Ursache 4: ein Name, den es nur in einem privaten Netz gibt

Firmennamen, .internal-Namen und Tailscale-MagicDNS-Namen lösen sich nur auf, solange Sie in diesem Netz sind. Hat es gestern funktioniert, prüfen Sie, ob das VPN an ist und seinen DNS-Server gesetzt hat.

Namen auf .local hängen von mDNS ab. macOS erledigt das ohne Zutun. Unter Linux brauchen sie meist Avahi und mdns4_minimal in /etc/nsswitch.conf. Gast-WLANs blockieren mDNS zwischen Geräten oft.

Ursache 5: kein Netzwerk

Temporary failure in name resolution heißt meist, dass das System gar keinen DNS-Server erreichen konnte. Prüfen Sie es mit einer Adresse, die keinen Namen braucht:

ping -c 1 1.1.1.1

Auf einem Linux-Server oder -Container sehen Sie sich auch /etc/resolv.conf an.

Fragen

Was bedeutet "nodename nor servname provided, or not known"?

So meldet macOS eine fehlgeschlagene Namensauflösung. SSH hat für den Namen keine IP-Adresse gefunden. Prüfen Sie die Schreibweise, den Alias in ~/.ssh/config und Ihr DNS.

Kann ich den Port nach einem Doppelpunkt angeben?

Nein. ssh liest host:22 als Teil des Namens. Verwenden Sie ssh -p 22 user@host oder die Form ssh://user@host:22.

Warum scheitert es nur mit sudo?

sudo ssh liest die ~/.ssh/config von root, nicht Ihre. Ihre Aliase sind dort unbekannt. Führen Sie ssh ohne sudo aus.

Quellen

Mehr zu Fehlermeldungen

Alle Anleitungen