ssh: connect to host port 22: Connection timed out when hostname used [duplicate]

У меня дома две установки Ubuntu 18.04 и 20.x, и я пытаюсь соединить их по ssh, я могу подключиться по внутреннему IP, но не по имени хоста. Установка:

Машина A: 192.x.x.115

Машина B: 192.x.x.125

На обеих машинах запущен ssh, и я могу подключиться, используя внутренний IP.

С машины B я хочу подключиться к машине A, используя имя хоста или hostname.ddns.net

Вот что я настроил:

Машина A:

machineA> /etc/hosts

127.0.0.1    machineA.ddns.net machineA

192.x.x.115  machineA

machineA> /etc/hostname

machineA.ddns.net

machineA> /etc/resolv. conf

nameserver 127.0.0.53
options edns0 trust-ad
search hsd1.xx.isp.net

Машина B:

machineB> ssh user@192.x.x.115 # i.e. machineA успешно

machineB> ssh -vvv user@machineA.ddns.net дает

Connecting to machineA.ddns.net [ISP assigned address] port 22.

ssh: connect to host machineA.ddns.net port 22: Connection timed out

machineB> ssh -vvv user@machineA

ssh: Could not resolve hostname machineA: Name or service not known

SSH_from_external_to_machineA is successful

ssh user@machineA.ddns.net # is successful

Команды, опробованные на machineA:

machineA> sudo service ssh status # дает active (running)

machineA> sudo netstat -alnp | grep : 22 # показывает :22 с LISTEN

machineA> sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

  1. Я чувствую, что ISP не блокирует ssh, так как я могу подключаться извне, используя machineA. ddns.net

  2. Маршрутизатор разрешает порт 22, так как я могу подключиться, используя IP.

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

Спасибо,

Дополнительные правки:

machineB> ping machineA_Hostname успешно

machineB> nslookup machineA.ddns.net показывает внешний IP, как и ожидалось

machineB> ssh machineA # Could not resolve hostname: Name or service not known

machineB> ssh machineA.ddns.net пытается подключиться к точному внешнему IP, о котором сообщил ping и 'Connection timed out'

1
задан 30 January 2021 в 20:48

2 ответа

Чтобы избежать жесткого образования внутреннего IP-адреса, настроить авахи-демон на Ubuntu, чтобы вы могли достичь имени хоста Ubuntu.local из хост-ОС.

Sudo APT-Get Установить Avahi-Daemon Avahi-Discover Avahi-Utils Libnss-MDNS MDNS-сканирование

0
ответ дан 18 March 2021 в 23:39

Вы хотите SSH Machine_b из Machine_a через имя хоста , верно?

Так что просто поставьте внутренний IP Machine_b с нужным именем (для вызова Machine_b) в Machine_a

, чтобы сделать это, просто отредактируйте / etc / hosts of maste_a и добавьте что-то вроде ниже:

192.168.222.1 my_lovely_machine_B

Теперь, если вы напечатаете:

ssh user@my_lovely_machine_B

, который должен работай!

Но Если вы не хотите беспокоить себя для жесткокодирования внутреннего IP-адреса и внесите изменения каждый раз (потому что IP-адреса могут измениться) вы можете сделать две вещи.

Первый подход: жесткий подход, но практичный: вам нужно запустить службу DNS, такую ​​как Bind, чтобы получить то, что вы хотите

второй подход: простая, но не хорошая для каждого сценария (для вас в порядке) : Напишите скрипт Bash для автоматизации установки статического IP для Machine_b и дайте ему работать на каждом запуске. Таким образом, вам не нужно беспокоиться о изменениях в области IP и всегда ваш Machine_B имеет тот же IP.

0
ответ дан 18 March 2021 в 23:39

Другие вопросы по тегам:

Похожие вопросы: