У меня есть Mac Mini (Yosemite) в моей локальной сети, и на нем вообще не работает DNS-сервер. Когда я хочу получить к нему доступ через SSH из терминала на моем Macbook Air (Yosemite), я могу ввести:
$ ssh myserver.local
И это прекрасно работает.
Но я хотел избежать необходимости каждый раз вводить домен «.local», поэтому я добавил «локальный» домен в список доменов поиска в настройках сети (для моего адаптера Wi-Fi, который в настоящее время используется в моем MBA). ).
Если я попытаюсь:
$ ssh myserver
это не работает (не удалось разрешить имя хоста).
Есть идеи, почему?
Разрешение имени хоста в Mac OS X (начиная с ~ 10.3) грубо говоря - я исключаю различные механизмы кэширования - следующая последовательность операций:
Допустимые имена для различных методов разрешения имен:
для 1: почти произвольные имена
для 2: name.local
для 3: имя (+ search.domain в настройках вашей сети) Запись Start Of Authority (SOA) для домена верхнего уровня обязательна.
для 4: полное доменное имя
В вашем первом сценарии ( myserver.local
) вы используете только «Файлы» и mDNS. myserver.local
«Файлы» не работают, потому что в вашем файле hosts нет записи . mDNS успешно разрешает его, потому что это допустимое и разрешимое имя mDNS.
Во втором сценарии ( myserver
& search.domain local
) вы используете 1, 2, 3 (и 4). «Файлы» не работают, потому что у вас нет записи myserver
, mDNS не работает, потому что это недопустимое имя mDNS. DNS (поиск доменов) не работает, потому что у вас нет DNS-сервера с записью SOA для .local в вашей сети (а также DNS).
Так что просто войдите sudo nano /etc/hosts
в Терминал и добавьте строку:
a.x.y.z myserver
(axyz= IP-номер вашего сервера) и все должно работать. Если вы действительно ленивы, даже буквы «а» в качестве имени может быть достаточно. Но не используйте одиночные числа (например, 1 или 123), потому что тогда ssh может попытаться подключиться к 0.0.0.1 или 0.0.0.123. По крайней мере, ping подключается к 0.0.0.1 или 0.0.0.123.
Ответ @klanomath прекрасно объясняет, как работает разрешение имен, почему ваша попытка не удалась и как вы можете создать псевдоним на своем локальном компьютере для статического адреса через файл /etc/hosts
.
Однако, если myserver
у него нет статического адреса, а он назначается динамически (например, DHCP), то /etc/hosts
это не идеально, так как нужно найти какой-то способ обновлять адрес в нем.
Вместо этого для SSH можно создать псевдоним /etc/ssh/ssh_config
(для всей системы) или ~/.ssh/config
(для пользователя):
Host myserver
HostName myserver.local
Тогда можно просто ssh myserver
.
вступление
кланомат