Non riesci a usare il nome del computer per accedere più SSH su Yosemite, come risolvere?

5

di ieri ho notato che non posso più collegarmi tramite SSH al server SSH del mio OS X usando il seguente comando:

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

utente è l'utente sul server, user-mbp è il nome della mia macchina, come specificato qui in System Preferences > Sharing :

HoscrittoquantoseguesottoRemoteLogin:On:

Tologintothiscomputerremotely,type"user@user-mbp".

Ma user-mbp sembra irraggiungibile, anche il ping non risponde:

User-MBP:~ user$ ping user-mbp
ping: cannot resolve user-mbp: Unknown host

È strano perché sono riuscito a connettere digitando user-mbp prima, ricordo. Anche OS X mi sta dicendo di usare quel nome host per la connessione SSH in System Preferences > Sharing , come ho detto.

Ho pensato che forse qualcosa ha incasinato il DNSResolver, anche se non ho toccato nulla, quindi ho provato i seguenti comandi presi dal post DNS non risolto su 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

Ma non hanno aiutato, quindi scrivo questo post. Ho installato Yosemite 10.10.4. Inoltre, recentemente ho installato Little Snitch, ora l'ho disinstallato, forse è per questo?

Che cosa posso fare per riattivare il mio nome host e renderlo nuovamente raggiungibile? (So che posso collegarmi alla macchina usando l'indirizzo locale del server, ma voglio usare user-mbp perché l'IP della LAN è assegnato dinamicamente).

Grazie per l'attenzione!

Modifica 1:

Ancora non è stato risolto. Ho anche provato a ripristinare il mio sistema a uno stato precedente quando tutto ha funzionato (ho avviato il sistema in modalità di ripristino (Cmd + R) e ripristinato da un backup di Time Machine (il server SSH che dovrebbe essere utente-mbp viene eseguito su un MacBook Pro)), ma non funziona più! Ora inizio a pensare che forse è un problema del router che sto usando? Potrebbe essere possibile?

Modifica 2 :

Ecco l'output di dig user-mbp.local emesso sul lato client:

; <<>> DiG 9.8.3-P1 <<>> user-mbp.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21043
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

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

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

;; Query time: 169 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Jul 28 23:53:27 2015
;; MSG SIZE  rcvd: 109

C'è un NXDOMAIN, quindi il nome host sembra non esistere ...

Modifica 3:

Ecco il contenuto di resolve.conf:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
domain Home
nameserver 192.168.1.1

daniel Azuelos mi ha consigliato di rimuovere la riga "dominio Home" mentre stavamo chattando, ma sembra che ogni volta che rimuovi quella riga, riappare automaticamente ...

Modifica 4 :

Ecco i comandi klanomath scritti su:

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
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48322
;; 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: 1 msec
;; SERVER: 192.168.1.2#5353(192.168.1.2)
;; WHEN: Wed Jul 29 21:44:37 2015
;; MSG SIZE  rcvd: 94

192.168.1.2 è l'IP del server SSH.

user-mbp:~ user$ dns-sd -B _ssh._tcp local
Browsing for _ssh._tcp.local
DATE: ---Wed 29 Jul 2015---
21:46:39.034  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
21:46:39.035  Add        2   6 local.               _ssh._tcp.           User’s MacBook Pro

Suppongo che Bonjour sia configurato correttamente, non è vero?

Tuttavia, la correzione temporanea di dns-sd -R user-mbp _ssh._tcp. local 22 sembra non funzionare:

user-mbp:~ user$ dns-sd -R user-mbp _ssh._tcp. local 22
Registering Service user-mbp._ssh._tcp..local port 22
DATE: ---Wed 29 Jul 2015---
21:51:47.238  ...STARTING...
21:51:48.048  Got a reply for service user-mbp._ssh._tcp.local.: Name now registered and active

^C
user-mbp:~ user$ ssh user@user-mbp
ssh: Could not resolve hostname user-mbp: nodename nor servname provided, or not known
    
posta user3019105 27.07.2015 - 11:19
fonte

2 risposte

3

Nella tua configurazione di rete locale tutti i servizi fanno affidamento su un servizio Bonjour correttamente funzionante (dns-sd), perché non hai un servizio di nomi di dominio locale.

Per rilevare i servizi di dns-sd propagati di un host usa il seguente comando (per favore sostituisci "indirizzo IP" sotto l'indirizzo ip del tuo Mac chiamato user-mbp; usa ifconfig -a su quel Mac per ottenerlo) :

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

L'output di scavo di un servizio Bonjour ben funzionante di un host è simile a questo:

; <<>> 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

Come puoi vedere, ho solo un servizio abilitato: ssh (+ sftp-ssh)

Per rilevare e ottenere i nomi di tutti gli host locali che forniscono un servizio speciale (nel mio esempio ssh, controlla altri servizi qui ) utilizza:

dns-sd -B _ssh._tcp local

Se vuoi saltare il rilevamento dopo un po 'inserisci ctrl C .

La mia uscita:

Browsing for _ssh._tcp.local
Timestamp     A/R Flags if Domain     Service Type              Instance Name
2:51:05.778  Add     2  4 local.      _ssh._tcp.                MyMac

Se non ottieni risultati simili, il tuo dns-sd è rotto e tutti gli altri strumenti come ping, nslookup (e di conseguenza tutti gli strumenti che si basano su questo come ssh) non funzionano nel tuo namespace dato che non hai un server DNS locale come alternativa. Il server DNS nel router (di solito un server di sola cache DNS) e i server DNS dell'ISP e i server radice superiori non conoscono la rete locale e lo spazio dei nomi.

Per risolvere temporaneamente questo problema (controlla man dns-sd ) quanto segue - eseguito su user-mbp - dovrebbe funzionare:

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

Potresti anche propagare un utente e una password (non l'ho verificato e non so come dovrebbe funzionare o quanto sia sicuro):

dns-sd -R user-mbp _ssh._tcp. local 22 u=<username> p=<password>

Per risolvere permanentemente questo problema, per prima cosa aggiorna il 10.10.4 con il Combo Updater, controlla le impostazioni del dominio di ricerca del server DHCP del router, elimina tutte le cache (ad es. con Onyx o Yosemite Cache Cleaner), utilizzare un nome * .local (ad esempio user-mbp.local anziché user-mbp) dove appropriato (es. Preferenze di condivisione, shell), don 't usa "local" come dominio di ricerca nei tuoi prefs di rete e poi ripara il tuo servizio Bonjour con diverse risposte fornite qui a stackexchange o se nulla aiuta in modo alternativo dnsmasq .

P.S. Dovresti sempre usare il nome completo Bonjour (ad es. User-mbp.local) per indirizzare un host / dispositivo locale usando dns-sd. La ragione per farlo è la seguente:

Molti router forniscono un dominio di ricerca per semplificare la configurazione se il DHCP su scheda è abilitato o propagare un nome di dominio specifico per la connessione ISP. Esempi: Il dominio di ricerca predefinito del mio Fritz! Box è "fritz.box", il dominio di ricerca predefinito per alcuni router DLink sembra essere "locale".

Se il tuo Mac utilizza DHCP per assegnare un IP, verrà applicato anche il dominio di ricerca predefinito. Nel mio caso il ping di "myothermac" aggiunge automaticamente ".fritz.box" e l'host myothermac.fritz.box verrà esaminato. Se non si dispone di un server DNS nella rete locale con una zona primaria "fritz.box". contenente un host con il nome "myothermac", il comando ping myothermac fallirà. Diversamente da ping myothermac.local , che dovrebbe funzionare se Bonjour è impostato correttamente.

Poiché la maggior parte dei router non sono consapevoli di Bonjour, cambia le impostazioni del dominio di ricerca predefinito contenenti "* .local" o "local" o apparentemente alcuni router DLink con un dominio di ricerca vuoto per qualcos'altro come "happy.home" per evitare eventuali conflitti con il servizio Bonjour.

    
risposta data 29.07.2015 - 03:19
fonte
2

Aggiungi .local al tuo nome macchina.

Se funziona, e non vuoi farlo, in Preferenze di Sistema > Rete > (Interfaccia) > Avanzate > DNS > Cerca domini, aggiungi ".local".

    
risposta data 28.07.2015 - 22:26
fonte

Leggi altre domande sui tag