ssh: не удалось разрешить имя хоста [имя хоста]: имя узла или имя сервера предоставлены или неизвестны

132

Я пытаюсь настроить VPN с Raspberry Pi, и первым делом sshя получаю возможность подключиться к устройству из-за пределов моей локальной сети. По какой-то причине это оказывается невозможным, и я не имею ни малейшего представления почему. Когда я пытаюсь зайти sshна свой сервер user@hostname, я получаю сообщение об ошибке:

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known 

Однако я могу войти на сервер с помощью,

ssh user@[local IP]

Сервер представляет собой Raspberry Pi Model B с последним дистрибутивом Raspbian, а машина, с которой я пытаюсь подключиться к нему, - это Macbook Pro с Mavericks. sshбыл включен на Raspberry Pi, когда я настраивал Raspbian.

Я часами просматривал Stack Overflow, пытаясь узнать, есть ли у кого-нибудь еще эта проблема, и ничего не нашел. В каждом sshнайденном мной руководстве говорится, что я должен просто иметь возможность настроить его на удаленном компьютере и входить в систему из любого места, используя имя хоста, и у меня никогда не было успеха с этим.

qaxf6auux
источник
Исходная ошибка указывает на конкретную проблему - все, [hostname]что вы используете, не может быть решено с того места, где вы пытаетесь это сделать. Вернет nslookup [hostname]вам то, [local IP]что вы ожидаете?
Admdrew
2
nslookup [hostname]выплевывает; Сервер: 8.8.8.8 Адрес: 8.8.8.8 # 53 ** сервер не может найти [имя хоста]: NXDOMAIN при запуске с моего Macbook
qaxf6auux
2
На всякий случай - вы вводите настоящее имя хоста [hostname], верно?
Admdrew
Этот вывод показывает, что вы используете общедоступные DNS-серверы Google, которые не знают, какое имя хоста вы пытаетесь использовать. Как именно вы настраиваете записи DNS для своего имени хоста?
Admdrew
2
Server: 192.168.0.1 Address: 192.168.0.1#53 ** server can't find mrddr: NXDOMAIN
Nakilon

Ответы:

29

Недавно я столкнулся с той же проблемой. Мне удалось установить ssh на свой пи в моей сети, но не из-за пределов моей домашней сети.

У меня уже есть:

  • установил и протестировал ssh в моей домашней сети.
  • Установите статический IP для моего пи.
  • Настроил службу динамического DNS и установил программное обеспечение на моем пи. Я сослался на эти инструкции по настройке статического IP-адреса, и есть еще много учебных ресурсов.

Кроме того, я настроил переадресацию порта на своем маршрутизаторе для размещения веб-сайта, и у меня даже был порт переадресации порта 22 на статический IP-адрес моего пи для ssh, но я оставил поле пустым, где вы указываете приложение, для которого вы выполняете переадресацию порта. роутер. Во всяком случае, я добавил ssh в это поле и, ВОЙЛА! Работающее соединение ssh из любого места на мой пи.

Я выпишу настройки переадресации портов своего роутера.

(ApplicationTextField) _ssh (внешний порт) _22 (Internal Port) _22 (Protocal) _Both (To IP Address) _192.168.1. ### (Enabled) _checkBox

Однако настройки переадресации портов могут отличаться для разных маршрутизаторов, поэтому ищите направления для своего маршрутизатора.

Теперь, когда я нахожусь за пределами своей домашней сети, я подключаюсь к своему пи, набирая:

ssh pi @ [имя хоста]

Затем я могу ввести свой пароль и подключиться.

ekwaters
источник
109

Если вы используете Mac, перезапуск DNS-ответчика устранил проблему для меня.

sudo killall -HUP mDNSResponder
Мо Битар
источник
Мне также нужно было пинговать, nslookup и копать домен. Не уверен, что помогло. Может, просто ожидание помогло.
Samizdis
сработало и у меня .. эта проблема началась после того, как я перезапустил свой Mac .. не знаю, что случилось во время загрузки
мурли
1
Мне также любопытно узнать, почему это работает ... и что в первую очередь вызывает проблему.
мистическая кола
Если nslookupработает, а ssh / ping / что-то еще нет, это решает проблему. Спасибо.
Эрик Б.
93

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

ssh -p 22 myName@hostname

или:

ssh -l myName -p 22 hostname
tokhi
источник
1
наконец то работает! должна быть ошибка с синтаксисомssh myName@hostname:myPort
Эдоардо
10

Если вам нужен доступ к вашей VPN из любой точки мира, вам необходимо зарегистрировать доменное имя и указать, чтобы оно указывало на общедоступный IP-адрес вашего VPN / сетевого шлюза. Вы также можете использовать службу динамического DNS для подключения имени хоста к общедоступному IP-адресу.

Если вам нужно только ssh с вашего Mac на Raspberry внутри вашей локальной сети , сделайте следующее: На вашем Mac отредактируйте /etc/hosts. Предполагая, что у Raspberry есть имя хоста "berry" и IP "172.16.0.100", добавьте одну строку:

# ip           hostname
172.16.0.100   berry

Теперь: ssh user@berryдолжно работать.

grebneke
источник
В дополнение к вышесказанному, я использовал "windows-cmd", чтобы узнать ip для моего URL-адреса сервера. Я сделал "ping url", чтобы получить IP. и, следовательно, добавили пару IP и URL в «/ etc / hosts». Он отлично работает там после (git pull и т. Д.)!
parasrish 01
9

У меня была такая же проблема, которую я смог решить, добавив .local к имени хоста, ala ssh user@hostname.local

horcle_buzz
источник
Это сделало это для меня. ping $(hostname)работал, но нужно делать ssh $(hostname).local. Mac обычно хорош ... но когда он отстой, это действительно так ...
javadba
У меня есть еще одна проблема: hadoopнужно сделать, ssh user@hostnameа я не могу просто добавить .localвручную. Я застрял
javadba
Добавление .localсделало это для меня в Ubuntu 19.10.
prkos
6

В моем случае я пробовал ssh вот так

ssh pedro@192.168.2.179:22 

когда правильный формат:

ssh pedro@192.168.2.179 -p 22 
Pedro
источник
1
Ух ты - застрял навсегда с переадресацией портов! Это священный текст.
FrozenOne
@ Педро, ты спас мне жизнь. Это был правильный ответ.
mesqueeb
4

Если ваша команда:

$ ssh -p 1122  path/to/pemfile user@[hostip/hostname]

Вы также столкнетесь с той же ошибкой

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known

когда вы упускаете вариант -i /path/to/pemfile ssh

Итак, команда должна быть:

$ ssh -p 1122 -i path/to/pemfile user@[hostip/hostname]
karthik v
источник
Я не использовал параметры pemfile, но все же подключился с помощьюssh -p xxxx user@hostname
Yoku
4

Мне нужно было подключиться к удаленному серверу Amazon

ssh -i ~/.ssh/test.pem -fN -L 5555:localhost:5678 ubuntu@hostname.com

Я получал следующую ошибку.

ssh: Could not resolve hostname <hostname.com>: nodename nor servname provided, or not known

Решение для Mac OSX

Проверка хоста решила проблему. Я использую Mac OSX Seirra.

ping hostname.com

Теперь проблема решена. Возможность подключения к серверу.

Примечание . Я тоже пробовал это решение . Но не вышло. Потом pingрешил вопрос.

mythicalcoder
источник
3

У меня была та же проблема: адрес, показанный в «Настройки» -> «Совместное использование» -> «Удаленный вход», не работал, и я получил «... имя узла или имя сервера предоставлено или неизвестно». Однако, когда я вручную отредактировал настройки (в «Настройки» -> «Совместное использование» -> «Удаленный вход» -> «Изменить») и включил «Использовать динамическое глобальное имя хоста»), это внезапно сработало.

введите описание изображения здесь

введите описание изображения здесь


источник
3

Кажется, что некоторые приложения не будут читать символические ссылки /etc/hosts(по крайней мере, на macOS), вам нужно жестко привязать их.

ln /path/to/hosts_file /etc/hosts

Андрей Вадува
источник
2

Это происходило со мной при попытке получить доступ к Github. Проблема в том, что у меня была привычка делать:

git remote add <xyz> ssh:\\git@github.com......

Но, если у вас есть эта ошибка из вопроса, удаление ssh:\\ может решить проблему. Это решило это за меня!

Обратите внимание, что вам придется сделать git remote remove <xyz>и повторно добавить удаленный URL без ssh:\\.

Monkpit
источник
1
Вы действительно использовали ssh:\\вместо ssh://?
Radon Rosborough
@RadonRosborough Это было недавно ... так что я не уверен. Должно быть! :)
Monkpit 08
1

Для меня проблема заключалась в опечатке в моем ~/.ssh/configфайле. Я имел:

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

Проблема была в том, что :после host1- этого не должно быть. sshне дает предупреждений об опечатках в ~/.ssh/configфайле. Когда он не может найти, host1он ищет машину локально, не может ее найти и печатает загадочное сообщение об ошибке.

jlyonsmith
источник
0

Попробуйте это, учитывая ваши разрешенные порты. Например, сохраните .pemфайл в своей Documentsпапке.

Чтобы получить к нему доступ сейчас, все, что вам нужно сделать cd [directory], это переместить вас в каталог выделенного файла. Вы можете сначала ввести ls, чтобы перечислить содержимое каталога, в котором вы сейчас находитесь:

ls
cd /Documents
chmod 400 mycertificate.pem
ssh -i "mycertificate.pem" ec2-user@ec2-1-2-3-4.us-compass-0.compute.amazonaws.com -p 80
Карл Рихтер
источник
0

Я получил эту ошибку, используя файл инвентаризации .yml в ansible, который был неправильно отформатирован. Для нескольких хостов в группе каждое имя хоста должно заканчиваться твердым двоеточием «:». В противном случае ansible запускает имена хостов вместе и выдает эту ошибку ssh.

Стив Юнт
источник