6 votes

Impossible d'utiliser le nom de machine pour se connecter en SSH sur Yosemite, comment réparer?

Depuis hier, j'ai remarqué que je ne peux plus me connecter via SSH à mon serveur SSH OS X en utilisant la commande suivante :

User-MBP:~ user$ ssh user@user-mbp

user est l'utilisateur sur le serveur, user-mbp est le nom de ma machine, tel que spécifié ici dans Préférences Système > Partage :

entrer ici la description de l'image

J'ai ce qui suit écrit sous Connexion à distance: Actif :

Pour vous connecter à cet ordinateur à distance, tapez "user@user-mbp".

Mais user-mbp semble être injoignable, même le ping ne répond pas :

User-MBP:~ user$ ping user-mbp
ping: impossible de résoudre user-mbp : domaine inconnu

C'est étrange car je pouvais me connecter en tapant user-mbp auparavant, je me souviens. De plus, OS X me dit d'utiliser ce nom d'hôte pour la connexion SSH dans Préférences Système > Partage, comme je l'ai dit.

J'ai pensé que peut-être quelque chose a perturbé le DNSResolver, même si je n'ai rien touché, alors j'ai essayé les commandes suivantes extraites du post DNS ne résolvant pas sur Mac OS X :

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Mais elles n'ont pas aidé, donc j'écris ce post. J'ai Yosemite 10.10.4 installé. De plus, récemment j'ai installé Little Snitch, maintenant je l'ai désinstallé, peut-être est-ce à cause de cela ?

Que puis-je faire pour réactiver mon nom d'hôte et le rendre à nouveau accessible ? (Je sais que je peux me connecter à la machine en utilisant l'adresse locale du serveur à la place, mais je veux utiliser user-mbp car l'adresse IP LAN est attribuée de manière dynamique).

Merci pour l'attention !

Édition 1 :

Toujours pas résolu. J'ai également essayé de restaurer mon système à un état antérieur où tout fonctionnait (j'ai démarré le système en mode de récupération (Cmd+R) et j'ai restauré à partir d'une sauvegarde Time Machine (le serveur SSH censé être user-mbp fonctionne sur un MacBook Pro)), mais cela ne fonctionne plus non plus ! Maintenant je commence à penser que peut-être c'est un problème du routeur que j'utilise ? Est-ce possible ?

Édition 2 :

Voici la sortie de dig user-mbp.local émise du côté client :

; <<>> DiG 9.8.3-P1 <<>> user-mbp.local
;; options globales: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: REQUÊTE, statut: NXDOMAIN, id: 21043
;; flags: qr rd ra; QUERY: 1, RÉPONSE: 0, AUTORITÉ: 1, SUPPLÉMENTAIRE: 0

;; SECTION QUESTION :
;user-mbp.local. IN A

;; SECTION D'AUTORITÉ :
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015072802 1800 900 604800 86400

;; Temps de requête: 169 msec
;; SERVEUR: 192.168.1.1#53(192.168.1.1)
;; QUAND: Mardi 28 juillet 2015 23:53:27
;; TAILLE DU MESSAGE reçu: 109

Il y a un NXDOMAIN, le nom d'hôte semble ne pas exister...

Édition 3 :

Voici le contenu de resolve.conf :

#
# Avis Mac OS X
#
# Ce fichier n'est pas utilisé par le nom d'hôte et la résolution d'adresse
# ou les mécanismes de routage de requêtes DNS utilisés par la plupart des processus sur
# ce système Mac OS X.
#
# Ce fichier est généré automatiquement.
#
domain Home
nameserver 192.168.1.1

daniel Azuelos m'a conseillé de supprimer la ligne "domain Home" lorsque nous chattions mais il semble que chaque fois que vous supprimez cette ligne, elle réapparaît automatiquement...

Édition 4 :

Voici les commandes qu'a écrites klanomath :

user-mbp:~ user$ dig _services._dns-sd._udp.local ptr @192.168.1.2 -p 5353

; <<>> DiG 9.8.3-P1 <<>> _services._dns-sd._udp.local ptr @192.168.1.2 -p 5353
;; options globales: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: REQUÊTE, statut: NOERROR, id: 48322
;; flags: qr aa; QUERY: 1, RÉPONSE: 2, AUTORITÉ: 0, SUPPLÉMENTAIRE: 0

;; SECTION QUESTION :
;_services._dns-sd._udp.local. IN PTR

;; SECTION RÉPONSE :
_services._dns-sd._udp.local. 10 IN PTR _ssh._tcp.local.
_services._dns-sd._udp.local. 10 IN PTR _sftp-ssh._tcp.local.

;; Temps de requête: 1 msec
;; SERVEUR: 192.168.1.2#5353(192.168.1.2)
;; QUAND: Mercredi 29 juillet 21:44:37 2015
;; TAILLE DU MESSAGE reçu : 94

192.168.1.2 est l'IP du serveur SSH.

user-mbp:~ user$ dns-sd -B _ssh._tcp local
Navigation pour _ssh._tcp.local
DATE: ---Mer 29 juillet 2015---
21:46:39.034  ...EN COURS...
Horodatage     A/R    Drapeaux  si Domaine               Type de service         Nom de l'instance
21:46:39.035  Ajouter    2   6 local.               _ssh._tcp.           MacBook Pro de l'utilisateur

Je suppose que Bonjour est configuré correctement, n'est-ce pas ?

Cependant, le correctif temporaire dns-sd -R user-mbp _ssh._tcp. local 22 semble ne pas fonctionner :

user-mbp:~ user$ dns-sd -R user-mbp _ssh._tcp. local 22
Enregistrement du service user-mbp._ssh._tcp..local port 22
DATE: ---Mer 29 juillet 2015---
21:51:47.238  ...EN COURS...
21:51:48.048  Obtenu une réponse pour le service user-mbp._ssh._tcp.local. : Nom désormais enregistré et actif

^C
user-mbp:~ user$ ssh user@user-mbp
ssh: impossible de résoudre le nom d'hôte user-mbp : nom de noeud ou de service non fourni, ou non connu

4voto

klanomath Points 63400

Dans la configuration de votre réseau local, tous les services dépendent fortement d'un service Bonjour (dns-sd) fonctionnant correctement, car vous n'avez pas de service de nom de domaine local.

Pour détecter les services dns-sd propagés d'un hôte, utilisez la commande suivante (veuillez remplacer "adresse-ip" ci-dessous par l'adresse IP de votre Mac nommé user-mbp; utilisez ifconfig -a sur ce Mac pour l'obtenir):

dig _services._dns-sd._udp.local ptr @adresse-ip -p 5353

La sortie dig d'un service Bonjour bien fonctionnant sur un hôte ressemble à ceci :

; <<>> DiG 9.8.5-P1 <<>> _services._dns-sd._udp.local ptr @192.168.177.9 -p 5353
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37167
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;_services._dns-sd._udp.local. IN PTR

;; ANSWER SECTION:
_services._dns-sd._udp.local. 10 IN PTR _ssh._tcp.local.
_services._dns-sd._udp.local. 10 IN PTR _sftp-ssh._tcp.local.

;; Query time: 4 msec
;; SERVER: 192.168.177.9#5353(192.168.177.9)
;; WHEN: Wed Jul 29 02:00:16 CEST 2015
;; MSG SIZE rcvd: 94

Comme vous pouvez le voir, j'ai seulement un service activé : ssh (+ sftp-ssh)

Pour détecter et obtenir les noms de tous les hôtes locaux fournissant un service spécial (dans mon exemple ssh, consultez plus de services ici) utilisez :

dns-sd -B _ssh._tcp local

Si vous souhaitez arrêter la détection après un certain temps, entrez simplement ctrlC.

Ma sortie :

Recherche de _ssh._tcp.local
Horodatage A/R Drapeaux si Domaine Type de service Nom de l'instance
2:51:05.778 Ajouter  2  4 local.   _ssh._tcp.    MyMac

Si vous n'obtenez pas des résultats similaires, votre dns-sd est cassé et tous les autres outils comme ping, nslookup (et par conséquent tous les outils qui en dépendent comme ssh) ne fonctionneront pas dans votre espace de noms étant donné que vous n'avez pas de serveur DNS local en tant qu'alternative. Le serveur DNS de votre routeur (généralement un serveur de cache DNS uniquement) ainsi que les serveurs DNS de votre ISP et les serveurs racine supérieurs ne connaissent rien de votre réseau local et de votre espace de noms.

Pour corriger temporairement cela (consultez man dns-sd), la commande suivante - exécutée sur user-mbp - devrait fonctionner :

dns-sd -R user-mbp _ssh._tcp. local 22

Vous pouvez même propager un nom d'utilisateur et un mot de passe (je n'ai pas testé cela et je ne sais pas comment cela devrait fonctionner ou si c'est sécurisé) :

dns-sd -R user-mbp _ssh._tcp. local 22 u= p=

Pour corriger cela de manière permanente, commencez par mettre à jour vers 10.10.4 avec le Combo Updater, vérifiez les paramètres de domaine de recherche du serveur DHCP de votre routeur, supprimez tous les caches (par ex. avec Onyx ou Yosemite Cache Cleaner), utilisez un nom *.local (par ex. user-mbp.local au lieu de user-mbp) lorsque c'est approprié (par ex. Préférences de partage, shell), ne utilisez pas "local" en tant que domaine de recherche dans vos préférences réseau, puis réparez votre service Bonjour avec plusieurs réponses fournies ici sur stackexchange ou si rien n'aide, configurez alternativement dnsmasq.


PD Vous devriez toujours utiliser le nom complet Bonjour (par ex. user-mbp.local) pour adresser un hôte/appareil local à l'aide de dns-sd. La raison en est la suivante :

Beaucoup de routeurs fournissent un domaine de recherche pour une configuration plus facile si le DHCP intégré est activé ou propagent un nom de domaine spécifique à la connexion ISP. Exemples : Le domaine de recherche par défaut de ma Fritz!Box est "fritz.box", le domaine de recherche par défaut pour certains routeurs DLink semble être "local".

Si votre Mac utilise le DHCP pour attribuer une IP, le domaine de recherche par défaut sera également appliqué. Dans mon cas, pinger "monautremac" ajoute automatiquement ".fritz.box" et l'hôte monautremac.fritz.box sera interrogé. Si vous n'avez pas de serveur DNS dans votre réseau local avec une zone principale "fritz.box." contenant un hôte avec le nom "monautremac", la commande ping monautremac échouera. Contrairement à ping monautremac.local, qui devrait fonctionner si Bonjour est configuré correctement.

Comme la plupart des routeurs ne sont pas compatibles avec Bonjour, modifiez tous les paramètres de domaine de recherche par défaut contenant "*.local" ou "local" ou apparemment certains routeurs DLink avec un domaine de recherche vide par quelque chose d'autre comme "happy.home" pour éviter tout conflit avec le service Bonjour.

3voto

Harv Points 6277

Ajoutez .local à votre nom de machine.

Si cela fonctionne et que vous ne voulez pas avoir à le faire, dans Préférences Système > Réseau > (Interface) > Avancé > DNS > Domaines de recherche, ajoutez ".local".

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X