Ssh: Не удалось разрешить имя хоста [имя хоста]: nodename или servname предоставлено или неизвестно
Я пытаюсь настроить VPN с помощью малины Pi, и первым шагом становится возможность ssh
в устройстве из-за пределов локальной сети. По какой-то причине это оказывается невозможным, и я не знаю, почему. Когда я пытаюсь ssh
на свой сервер с [email protected]
, я получаю ошибку:
ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known
Однако я могу войти на сервер с помощью
ssh [email protected][local IP]
Сервер - это модель Ribberry Pi Model B, в которой используется последний дистрибутив Raspbian, и машина, с которой я пытаюсь подключиться, - это Macbook Pro, работающий с Mavericks. ssh
был включен на малине Pi, когда я установил Raspbian.
Я просматривал Qaru в течение нескольких часов, пытаясь понять, есть ли у кого-то еще эта проблема, и я ничего не нашел. Каждое учебное пособие ssh
, которое я нахожу, говорит, что я должен просто настроить его на удаленном компьютере и войти в него из любого места с помощью имени хоста, и я никогда не имел успеха с этим.
Ответы
Ответ 1
Недавно я столкнулся с той же проблемой. Я был в состоянии ssh к моему pi в моей сети, но не из-за пределов моей домашней сети.
У меня уже было:
- установлен и протестирован ssh в моей домашней сети.
- Задайте статический IP-адрес для моего пи.
- Настройте службу Dynamic DNS и установите программное обеспечение на моем пи.
Я ссылался на эти инструкции для настройки статического ip, и есть еще много учебных ресурсов.
Кроме того, я настроил перенос портов на моем маршрутизаторе для размещения веб-сайта, и у меня был даже порт 22 переадресации на мой статический IP-адрес для ssh, но я оставил поле пустым, где вы указываете приложение, которое вы выполняете для порта переадресация на маршрутизатор. Во всяком случае, я добавил 'ssh' в это поле и, VOILA! Рабочее соединение ssh из любого места в мой pi.
Я выписал настройки перенаправления портов маршрутизатора.
(ApplicationTextField) _ssh (внешний порт) _22 (Внутренний порт) _22 (Protocal) _Both (К IP-адресу) _192.168.1. ### (Включено) _checkBox
Настройки переадресации портов могут отличаться для разных маршрутизаторов, поэтому найдите маршруты для своего маршрутизатора.
Теперь, когда я за пределами моей домашней сети, я подключаюсь к своему пи, набрав:
ssh pi @[имя хоста]
Затем я могу ввести свой пароль и подключиться.
Ответ 2
У меня была такая же проблема, связанная с удаленной машиной. но мне удалось войти в систему, как показано ниже:
ssh -p 22 [email protected]
или
ssh -l myName -p 22 hostname
Ответ 3
Если вы на Mac, перезапуск DNS-ответчика исправил проблему для меня.
sudo killall -HUP mDNSResponder
Ответ 4
Если вам нужен доступ к VPN из любой точки мира, вам необходимо зарегистрировать доменное имя и указать его на общедоступный IP-адрес вашего VPN/сетевого шлюза. Вы также можете использовать службу Dynamic DNS для подключения имени хоста к общедоступному ip.
Если вам нужно только ssh от вашего Mac до вашей малины внутри вашей локальной сети, сделайте следующее: на вашем Mac отредактируйте /etc/hosts
. Предполагая, что у малины есть имя хоста "ягода" и ip "172.16.0.100", добавьте одну строку:
# ip hostname
172.16.0.100 berry
Теперь: ssh [email protected]
должен работать.
Ответ 5
У меня была та же проблема, которую я смог решить, добавив .local в имя хоста, ala ssh [email protected]
Ответ 6
Если ваша команда:
$ ssh -p 1122 path/to/pemfile [email protected][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 [email protected][hostip/hostname]
Ответ 7
У меня была та же проблема: адрес, показанный в разделе "Настройки" → "Общий доступ" → "Удаленный вход", не работал, и я получил "... nodename или servname, предоставленный или неизвестный". Однако, когда я вручную отредактировал настройки (в разделе "Настройки" → "Общий доступ" → "Удаленный вход" → "Редактировать" ) и включил "Использовать динамическое глобальное имя хоста", это неожиданно сработало.
![enter image description here]()
![enter image description here]()
Ответ 8
Мне нужно было подключиться к удаленному серверу Amazon
ssh -i ~/.ssh/test.pem -fN -L 5555:localhost:5678 [email protected]
Я получил следующую ошибку.
ssh: Could not resolve hostname <hostname.com>: nodename nor servname provided, or not known
Решение для Mac OSX
Pinging хозяин решил проблему. Я использую Mac OSX Seirra.
ping hostname.com
Теперь проблема решена. Возможность подключения к серверу.
Примечание: я попробовал это решение. Но это не сработало. Затем ping
разрешил проблему.
Ответ 9
Похоже, что некоторые приложения не читают символические ссылки /etc/hosts
(по крайней мере, на macOS), вам нужно жестко связать их.
ln /path/to/hosts_file /etc/hosts
Ответ 10
Это происходило со мной при попытке получить доступ к Github. Проблема в том, что я имел обыкновение делать:
git remote add <xyz> ssh:\\[email protected]
Но если у вас возникла эта ошибка из вопроса, удаление ssh:\\
может решить проблему. Он решил это для меня!
Обратите внимание, что вам нужно будет сделать git remote remove <xyz>
и повторно добавить удаленный URL-адрес без ssh:\\
.
Ответ 11
Для меня проблема была опечатка в моем файле ~/.ssh/config
. У меня было:
Host host1:
HostName 10.10.1.1
User jlyonsmith
Проблема была в :
после host1
- его там быть не должно. ssh
не дает предупреждений об опечатках в файле ~/.ssh/config
. Когда он не может найти host1
, он ищет машину локально, не может найти ее и печатает загадочное сообщение об ошибке.
Ответ 12
Попробуйте это, учитывая ваши разрешенные порты. Храните файл .pem
в папке Documents
, например.
Чтобы получить доступ к нему, все, что вам нужно сделать, это cd [directory]
, который перемещает вас в каталог выделенного файла. Вы можете сначала напечатать ls
, чтобы указать содержимое каталога, в котором вы сейчас находитесь:
ls
cd /Documents
chmod 400 mycertificate.pem
ssh -i "mycertificate.pem" [email protected] -p 80