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.

Я годинами переглядав стек переповнення, намагаючись дізнатися, чи є у когось інших така проблема, і я нічого не знайшов. У кожному sshпідручнику, який я знайшов, йдеться про те, що я повинен мати можливість налаштувати його на віддаленій машині та увійти з будь-якого місця за допомогою імені хоста, і я ніколи не мав успіху в цьому.


Початкова помилка вказує на конкретну проблему - все, [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
Накілон

Відповіді:


29

Нещодавно я натрапив на те саме питання. Мені вдалося перейти на свою пі в моїй мережі, але не за межами домашньої мережі.

Я вже мав:

  • встановлено та протестовано ssh у моїй домашній мережі.
  • Встановити статичний IP для мого пі.
  • Налаштуйте службу Dynamic DNS та встановіть програмне забезпечення на моєму pi. Я посилався на ці вказівки щодо налаштування статичного ip, і там є ще багато інструктивних ресурсів.

Крім того, я встановив порт на своєму маршрутизаторі для розміщення веб-сайту, і у мене був навіть порт переадресації 22 на статичний IP-код мого pi для ssh, але я залишив поле порожнім, де ви вказуєте програму, для якої виконуєте переадресацію порту роутер. У всякому разі, я додав 'ssh' в це поле і, VOILA! Робоче ssh-з'єднання з будь-якого місця до мого пі.

Я випишу налаштування переадресації порту мого маршрутизатора.

(ApplicationTextField) _ssh (зовнішній порт) _22 (внутрішній порт) _22 (протокальний) _Both (до IP-адреси) _192.168.1. ### (увімкнено) _checkBox

Налаштування переадресації портів можуть бути різними для різних маршрутизаторів, тому шукайте вказівки щодо маршрутизатора.

Тепер, коли я перебуваю за межами своєї домашньої мережі, я підключаюся до свого pi, набравши:

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

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


109

Якщо ви перебуваєте на Mac, перезапуск DNS-відповіді вирішив проблему для мене.

sudo killall -HUP mDNSResponder

Мені також потрібно було ping, nslookup та викопати домен. Не впевнений, хто з них допоміг. Можливо, просто очікування допомогло.
Саміздіс

працював і для мене .. ця проблема почалася після того, як я перезапустив mac..не знаю, що зіпсувалося під час завантаження
murli

1
Мені також цікаво дізнатися, чому це працює ... і що спричиняє проблему в першу чергу.
містична кола

Якщо nslookupпрацює, але ssh / ping / все, що ні, це вирішує проблему. Дякую.
Ерік Б

93

У мене була така ж проблема підключення до віддаленої машини. але мені вдалося увійти як нижче:

ssh -p 22 myName@hostname

або:

ssh -l myName -p 22 hostname

1
нарешті це працює! має бути помилка з синтаксисомssh myName@hostname:myPort
Едоардо

10

Якщо вам потрібен доступ до VPN з будь-якої точки світу, вам потрібно зареєструвати доменне ім’я та вказати його на загальнодоступну ip адресу вашого VPN / мережевого шлюзу. Ви також можете скористатися послугою Динамічний DNS для підключення імені хоста до вашого загального ip.

Якщо вам потрібно лише перейти з Mac на ваш Raspberry у вашій локальній мережі , зробіть це: На своєму Mac відредагуйте /etc/hosts. Припускаючи, що Малина має ім'я хоста "ягода" та ip "172.16.0.100", додайте один рядок:

# ip           hostname
172.16.0.100   berry

Тепер: ssh user@berryмає працювати.


На додаток до вище, я використовував "windows-cmd" для знайомства з ip для свого сервера-URL. Я зробив "ping url", щоб отримати IP. а значить, додав IP-адресу та пару URL-адрес у "/ etc / hosts". Це прекрасно працює там після (git pull тощо)!
парасити

9

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


Це зробило це для мене. ping $(hostname)працював, але потрібно робити ssh $(hostname).local. Mac, як правило, чудово .. але коли він смокче, це справді так ...
javadba

У мене є ще одне питання: hadoopпотрібно робити, ssh user@hostnameі я не можу просто додати .localвручну. Я застряг
javadba

Додавання .localзробив це для мене на Ubuntu 19.10.
prkos

5

У моєму випадку я намагався ssh так

ssh pedro@192.168.2.179:22 

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

ssh pedro@192.168.2.179 -p 22 

1
Нічого ... назавжди застряг при переадресації порту! Це святий текст.
заморожено

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/pemfilessh

Отже, командування повинно бути:

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

Я не використовував параметри 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вирішено питання.


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:\\.


1
Ви справді використовували, ssh:\\а не ssh://?
Радон Росборо

@RadonRosborough Це був деякий час тому назад ... так що, я не впевнений. Може мати! :)
Monkpit

1

Для мене проблема була помилковою помилкою на моєму ~/.ssh/configфайлі. Я мав:

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

Проблема була :після host1- її там не повинно бути. sshне дає попереджень щодо помилок друку у ~/.ssh/configфайлі. Якщо він не може знайти, host1він шукає машину локально, не може її знайти і роздруковує загадкове повідомлення про помилку.


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 помилку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.