Я пытаюсь соединить два компьютера Machintosh, используя SSH через их имя хоста. Оба компьютера работают под управлением Mac OS X Yosemite 10.10.2. И оба компьютера подключены через Wi-Fi-маршрутизатор ADSL Actiontec T1200H под торговой маркой Telus (руководство в формате PDF доступно здесь).

При запуске этой команды SSH с именем хоста компьютера:

ssh macbookpro.local

Я получаю следующее сообщение:

ssh: Could not resolve hostname macbookpro.local: nodename nor servname provided, or not known

Но если я запускаю команду SSH с IP-адресом компьютера:

ssh 10.10.1.12

Оно работает.

И я до сих пор узнал, что это проблема с брандмауэром; если я выключаю брандмауэр на обоих компьютерах, соединение SSH работает. Но как я могу установить SSH-соединение, используя имена компьютеров, когда включен брандмауэр? И возможно ли это вообще?

2 ответа2

1

Как связаны эти два компьютера Macintosh? Через роутер? Такие имена хостов, как macbookpro.local работают так, как будто они транслируются в сети через Bonjour, который является просто модным названием Apple для сетевых служб широковещательной / многоадресной передачи:

Bonjour, также известный как сеть с нулевой конфигурацией, обеспечивает автоматическое обнаружение устройств и служб в локальной сети с использованием стандартных IP-протоколов.

Поэтому, если эти два компьютера Macintosh находятся в одной сети и используют один и тот же маршрутизатор, если этот маршрутизатор блокирует сетевые службы широковещательной / многоадресной передачи, имя хоста macbookpro.local не будет найдено, поскольку оно будет заблокировано маршрутизатором.

Первое, что я бы порекомендовал, - это войти в свой маршрутизатор - какой бы моделью он ни был - и в меню по инструментам для просмотра опции широковещательной / многоадресной рассылки настроен фильтр или блокировать широковещательный / многоадресный трафик. Но, глядя на детали вашего роутера - маршрутизатора Actiontec T1200H ADSL Wi-Fi (PDF с инструкцией, доступной здесь), - кажется, нет даже способа заблокировать сетевой широковещательный / многоадресный трафик. Поэтому моя следующая идея будет состоять в том, чтобы увидеть, есть ли какие-то настройки брандмауэра в Macintosh, которые мешают Bonjour не работать? Может быть, стоит отключить брандмауэр, чтобы хотя бы проверить теорию на данный момент.

Глядя на параметры брандмауэра, которые есть у меня в моей установке Mac OS X 10.9.5 (Mavericks), кажется, что снятие флажка «Блокировать все входящие подключения» при включенном брандмауэре позволит вашему брандмауэру быть активным, в то же время позволяя службам Bonjour быть переданы в систему.

Когда брандмауэр включен, нажмите кнопку «Параметры брандмауэра…», и вы увидите этот экран с флажком «Блокировать все входящие подключения»:

В соответствующей заметке вы можете отладить этот материал - как объяснено в ответе, который я разместил здесь, - протестировав сеть с помощью arp и dns-sd из «терминала» Mac OS X следующим образом. Например, чтобы использовать arp чтобы увидеть, какие устройства находятся в сети, просто введите эту команду и нажмите return:

arp -a

Вывод, возвращаемый, если широковещательный / многоадресный трафик отправляется на ваш компьютер, будет выглядеть примерно так:

computer-name.local (123.456.789.0) at 00:aa:bb:cc:dd:ee on en0 ifscope [ethernet]
? (192.168.2.2) at bb:88:99:cc:77:aa on bridge100 ifscope [bridge]

Это показывает мне, что у computer-name.local есть IP-адрес 123.456.789.0 а мостовое соединение, используемое специальной сетью, где я делю свое соединение Ethernet через Wi-Fi, - 192.168.2.2 .

Кроме того, вы можете использовать dns-sd (инструмент для проверки многоадресной DNS (mDNS) и обнаружения службы DNS (DNS-SD)) из «Терминала», как показано ниже, чтобы убедиться, что ваш компьютер выбирает имя хоста другой машины:

dns-sd -q [name of computer].local

Предполагается, что вы уже знаете имя компьютера и широковещательная / многоадресная передача работает; замените [name of computer].local на имя этого компьютера. Тогда результат будет примерно таким; обратите внимание, что 123.456.789.0 является поддельным IP-адресом для примера:

    Timestamp     A/R Flags if Name                          Type  Class   Rdata
19:56:22.856  Add     2  4 [name of computer].local.               Addr   IN     123.456.789.0
0

macbookpro.local , вероятно, является вашим LocalHostName; 1 из 3 -х имен компьютеров , используемых в Mac OS X HostName LocalHostName и ComputerName Если я правильно помню, он используется для Bonjour или AFP.

С другой стороны, ssh использует протокол IP и не является специфичным для Mac OS X. Он попытается определить ваше «имя хоста» с помощью DNS. Вы можете найти свой хостам, используя следующую команду:

scutil --get HostName

или просто:

hostname

И наоборот, вы также можете использовать localhost если вы подключаетесь к своему компьютеру.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .