Не удалось разрешить имя хоста

Поэтому я стараюсь:

ssh $(hostname) 

и это говорит мне:

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

Он знает, что его собственное имя хоста «woofy»; почему он не может подключиться к самому себе?

Поэтому мы знаем, что hostname возвращает woofy . Но это имя не может быть разрешено для IP-адреса.

Короткий ответ: вам нужно добавить запись для woofy в /etc/hosts . Разрешите 127.0.0.1. Или, если ваша система поддерживает IPv6, :: 1.

Сохраните резервную копию предыдущей версии /etc/hosts если вы допустили ошибку (для этого я использую удобный пакет etckeeper , но если вы предпочитаете это раньше, вы можете использовать ручную резервную копию или даже RCS).

Долгий ответ заключается в том, что как имена хостов разрешены для IP-адресов, управляется набором файлов конфигурации, которые немного отличаются между вариантами Unix. Вы можете настроить свою систему Unix для разрешения имен хостов по файлу hosts ( /etc/hosts будут работать практически в любой системе Unix) или DNS (системы, которые имеют прямую доступность IP-адресов в Интернете, всегда будут делать это). Существуют и другие альтернативы, в основном менее широко используемые (включая LDAP и NIS / NIS +). См. Статью Википедии о коммутаторе имен, чтобы узнать больше об этом.

Изменить: если это все еще вызывает поиск DNS, вероятно, проблема заключается в том, что ваша конфигурация коммутатора имен службы поддерживает DNS до /etc/hosts поэтому изменение на /etc/hosts не влияет. Попробуйте посмотреть /etc/nsswitch.conf (как настраивается NSS, зависит от операционной системы).

В системах Unix есть понятие имени хоста, которое не связано с сетевой подсистемой. Это имя показывает команду hostname и что появляется в журналах. Когда вы создаете соединение ssh, он выполняет поиск DNS , чтобы узнать, что означает это имя в контексте семейства протоколов TCP / IP , на котором работает SSH.

Для вашего удобства вы должны убедиться, что это имя хоста согласуется с тем, что говорит ваш DNS-сервер вашего соседства, и с чем (если что-либо) ваша система думает, что это вызвано. Фактически, имена DNS не связаны с машинами, а с сетевыми интерфейсами, поэтому ваше DNS-имя будет связано с одним из ваших сетевых интерфейсов. На машинах без фактического сетевого подключения имя хоста должно быть связано с интерфейсом loopback .

На практике имя хоста хранится в файле /etc/hostname на большинстве машин. Вы можете изменить его во время выполнения с помощью команды hostname ; это делается в начале процесса загрузки. Локальная идея имени DNS хранится в /etc/hosts в строке, соответствующей либо интерфейсу loopback ( 127.0.0.1 ), либо одному из сетевых интерфейсов машины.