Ya no se puede usar el nombre de la máquina para iniciar sesión usando SSH en Yosemite, ¿cómo solucionarlo?

desde ayer he notado que ya no puedo conectarme a través de SSH al servidor SSH de mi OS X usando el siguiente comando:

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

user es el usuario en el servidor, user-mbp es el nombre de mi máquina, como se especifica aquí en System Preferences > Sharing:

ingrese la descripción de la imagen aquí

Tengo lo siguiente escrito debajo Remote Login: On:

Para iniciar sesión en esta computadora de forma remota, escriba " usuario@usuario-mbp ".

Pero user-mbpparece ser inalcanzable, incluso el ping no responde:

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

Es extraño porque antes me podía conectar escribiendo user-mbp, lo recuerdo. También OS X me dice que use ese nombre de host para la conexión SSH en System Preferences > Sharing, como dije.

Pensé que tal vez algo estropeó el DNSResolver, incluso si no toqué nada, así que probé los siguientes comandos tomados de la publicación DNS no se resuelve en 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

Pero no ayudaron, así que estoy escribiendo esta publicación. Tengo Yosemite 10.10.4 instalado. Además, recientemente instalé Little Snitch, ahora lo desinstalé, ¿tal vez sea por eso?

¿Qué puedo hacer para volver a habilitar mi nombre de host y que sea accesible nuevamente? (Sé que puedo conectarme a la máquina usando la dirección local del servidor, pero quiero usar user-mbpporque la IP de LAN se asigna dinámicamente).

¡Gracias por la atención!

Edición 1:

Todavía no se resolvió. También intenté restaurar mi sistema a un estado anterior cuando todo funcionaba (inicié el sistema en modo de recuperación (Cmd+R) y restauré desde una copia de seguridad de Time Machine (el servidor SSH que se supone que es usuario-mbp se ejecuta en un MacBook Pro)), ¡pero ya no funciona! ¿Ahora empiezo a pensar que tal vez sea un problema del enrutador que estoy usando? ¿Podria ser posible?

Edición 2 :

Aquí está el resultado de dig user-mbp.localemitido en el lado del cliente:

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

Hay un NXDOMAIN, por lo que el nombre de host parece no existir...

Edición 3:

Aquí está el contenido de 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 me aconsejó que quitara la línea "domain Home" cuando estábamos chateando pero parece que cada vez que quitas esa línea vuelve a aparecer automáticamente...

Edición 4 :

Estos son los comandos sobre los que escribió 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
;; 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 es la IP del servidor 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

Supongo que Bonjour está configurado correctamente, ¿no?

Sin embargo, la solución temporal dns-sd -R user-mbp _ssh._tcp. local 22parece no funcionar:

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
Inserte en su pregunta: qué cambió ayer en su Mac. Aclare qué quiere decir con "restaurar mi sistema a un estado anterior cuando todo funcionaba"? Agregue la salida del Terminalcomando hostname.
hostnameregresa user-mbp, lo que quiero decir when everything workses que pude ejecutar ssh user@user-mbpy funcionó. Eso fue justo antes de instalar Little Snitch. Incluso aquí, algo gracioso, he restaurado el sistema a ese estado (cuando todo funcionaba) pero resultó ser un estado en el que "se suponía que todo funcionaba", porque todavía no funciona. Espero haber sido claro. ¿Qué podría ser?
¿Qué hiciste para "restaurar el sistema a ese estado"?
Inicié el sistema en modo de recuperación (Cmd+R) y restauré desde una copia de seguridad de Time Machine (el servidor SSH que se supone que se user-mbpejecuta en una MacBook Pro)
Agregue este significado en su pregunta (mejórelo) porque los comentarios no están aquí para quedarse solo para ayudar a mejorar la pregunta real.
¿Qué máquina en su red es 192.168.1.1?
es el enrutador
Mi suposición es que user-mbp no está transmitiendo su nombre de host o que su enrutador no está actualizando la entrada DNS con el nombre de host correcto. Me temo que tampoco estoy seguro de cómo resolverlo, pero ¿podría ser útil investigar sobre esas ideas?
Revisé la configuración del enrutador y encontré un registro DHCP donde la IP del servidor en la LAN tiene el nombre de host user-mbp, ¿puedo forzar una transmisión del nombre de host desde el servidor?
Información del usuario 3019105 para insertar en la pregunta original: hay un fantasma searchdomain Homeen el /etc/resolv.confde user-mbp.
¿Has intentado ping user-mbp.local.? (Observe el punto final en .local.!)
@KurtPfeifle ping user-mbp.localfunciona, y puedo usar SSH, es mi máquina. Pero, ¿por qué ping user-mbpantes funcionaba y ahora ya no?
Si supiera qué (¿usted?) cambió en su red y en su sistema local, podría responder a esto...
¿Qué debo comprobar?

Respuestas (2)

En la configuración de su red local, todos los servicios dependen en gran medida de un servicio Bonjour que funcione correctamente (dns-sd), porque no tiene un servicio de nombres de dominio local.

Para detectar los servicios dns-sd propagados de un host, use el siguiente comando (reemplace "ip-address" a continuación por la dirección IP de su Mac llamada user-mbp; utilícela ifconfig -aen esa Mac para obtenerla):

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

La salida de excavación de un servicio Bonjour que funciona bien de un host se ve así:

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

Como puedes ver solo tengo un servicio habilitado: ssh (+ sftp-ssh)

Para detectar y obtener los nombres de todos los hosts locales que brindan un servicio especial (en mi ejemplo ssh, busque más servicios aquí ) use:

dns-sd -B _ssh._tcp local

Si desea omitir la detección después de un tiempo, simplemente ingrese ctrlC.

Mi salida:

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

Si no obtiene resultados similares, su dns-sd está roto y todas las demás herramientas como ping, nslookup (y, en consecuencia, todas las herramientas que dependen de eso como ssh) no funcionarán en su espacio de nombres ya que no tiene un DNS local -servidor como alternativa. El servidor DNS en su enrutador (generalmente un servidor de almacenamiento en caché de DNS), así como los servidores DNS de su ISP y los servidores raíz superiores no saben nada sobre su red local y espacio de nombres.

Para solucionar esto temporalmente (marque man dns-sd), lo siguiente, ejecutado en user-mbp, debería funcionar:

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

Incluso puede propagar un usuario y una contraseña (no probé eso y no sé cómo debería funcionar o qué tan seguro es):

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

Para solucionar esto de forma permanente, primero actualice a 10.10.4 con Combo Updater, verifique la configuración del dominio de búsqueda del servidor DHCP de su enrutador, elimine todos los cachés (por ejemplo, con Onyx o Yosemite Cache Cleaner), use un nombre *.local (por ejemplo, usuario -mbp.local en lugar de user-mbp) cuando corresponda (por ejemplo, compartir preferencias, shell), no use "local" como dominio de búsqueda en sus preferencias de red y luego repare su servicio Bonjour con varias respuestas proporcionadas aquí en stackexchange o si nada ayuda alternativamente a configurar dnsmasq .


PD: siempre debe usar el nombre completo de Bonjour (por ejemplo, usuario-mbp.local) para dirigirse a un host/dispositivo local usando dns-sd. La razón para hacerlo es la siguiente:

Muchos enrutadores proporcionan un dominio de búsqueda para una configuración más sencilla si el DHCP incorporado está habilitado o propagan un nombre de dominio específico de la conexión ISP. Ejemplos: El dominio de búsqueda predeterminado de mi Fritz!Box es "fritz.box", el dominio de búsqueda predeterminado para algunos enrutadores DLink parece ser "local".

Si su Mac usa DHCP para asignar una IP, también se aplicará el dominio de búsqueda predeterminado. En mi caso, hacer ping a "myothermac" agrega automáticamente ".fritz.box" y se probará el host myothermac.fritz.box. Si no tiene un servidor DNS en su red local con una zona principal "fritz.box". que contenga un host con el nombre "myothermac", el comando ping myothermacfallará. A diferencia de ping myothermac.local, que debería funcionar si Bonjour está configurado correctamente.

Dado que la mayoría de los enrutadores no son conscientes de Bonjour, cambie cualquier configuración de dominio de búsqueda predeterminada que contenga "*.local" o "local" o aparentemente algunos enrutadores DLink con un dominio de búsqueda vacío a algo más como "feliz.casa" para evitar conflictos con el servicio Bonjour.

¡Buena respuesta técnica!
@klanomath Por favor, revise mi Edición 4, he publicado el resultado de los comandos que me dijo que usara. Además, OS X ya está en la versión 10.10.4, así que supongo que no hay actualizaciones por el momento.
@ user3019105 su edición 4 puede ser incorrecta: ¿ejecutó el comando de excavación recomendado desde el host user-mbp (¿ejecutando el servidor ssh?) contra sí mismo (user-mbp = 192.168.1.2 = MacBook Pro del usuario)? Si es así, intente ejecutar dig desde una segunda máquina Mac o Linux contra 192.168.1.2. De lo contrario, el resultado de la excavación se ve bien y es obvio que la corrección temporal no ayudó porque no había nada que corregir con respecto a dns-sd en 192.168.1.2.

Agregue .local al nombre de su máquina.

Si eso funciona, y no quiere tener que hacerlo, en Preferencias del sistema > Red > (Interfaz) > Avanzado > DNS > Dominios de búsqueda, agregue ".local".

Gracias por la respuesta, lo he intentado user-mbp.localpero me sigue saliendo ssh: Could not resolve hostname, lo curioso es que antes pude conectarme por medio user-mbp... ¿Será problema del router? ¿Algo más que pueda hacer?
En el extremo del servidor, escriba "nombre de host". ¿Qué surge?
user-mbp:~ user$ hostnameda user-mbp como debería. De hecho, el nombre de host en el servidor es user-mbp, incluso scutil --get HostNamedevuelve user-mbp . Es realmente extraño, ¿no?
Haga una excavación user-mbp.local desde el cliente. Estoy pensando en un problema de DNS. ¿Puedes hacer ping a la IP?
He publicado el resultado en una edición de la publicación original. Sí, puedo hacer ping a la IP del servidor en la LAN
Problema de DNS. Verifique su servidor DNS en el cliente, deshabilite los firewalls en ambos extremos, asegúrese de que Littlesnitch LaunchDaemon esté descargado, verifique la configuración de DNS en el enrutador.
Sí, pensé lo mismo, problema de DNS, pero: el Firewall de OS X para las conexiones entrantes está deshabilitado, Little Snitch ya no está instalado, porque he restaurado el sistema desde una copia de seguridad de Time Machine en la que Little Snitch no estaba instalado ( Noté este problema solo después de instalarlo) e inicié sesión en la configuración del enrutador, es un enrutador que me proporcionó el proveedor, no hay mucho sobre la configuración de DNS, ¿qué debo buscar? Puedo decir que user-mbpes el nombre de host de la IP DHCP del servidor.
Sobre el DNS en el cliente. Si nslookup user-mbpescribo obtengo un NXDOMAIN, pero si escribo nslookup xxx.xxx.xxx.xxxdonde xxx.x... es la IP del servidor, en la LAN obtengoname = User-MBP.
@Harv: Estoy de acuerdo contigo, esto es solo un problema de DNS. El problema es local para la Mac.
La forma súper correcta sería decir "Agregar .local.al nombre de su máquina". (Observe el punto final, ., que le dice a todos los programas que este es el nodo raíz y se asegura de que no buscará mbp-user.local.other.search.domain.sino solo mbp-user.local.).
En Windows, los dominios para ssh requieren una extensión. Cualquier extensión servirá. Además, necesitaba actualizar C:\Windows\System32\drivers\etc\hosts con un nuevo nombre de host, incluida la extensión.