У меня дома две установки 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
Я чувствую, что ISP не блокирует ssh, так как я могу подключаться извне, используя machineA. ddns.net
Маршрутизатор разрешает порт 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'
Чтобы избежать жесткого образования внутреннего IP-адреса, настроить авахи-демон на Ubuntu, чтобы вы могли достичь имени хоста Ubuntu.local
из хост-ОС.
Sudo APT-Get Установить Avahi-Daemon Avahi-Discover Avahi-Utils Libnss-MDNS MDNS-сканирование
Вы хотите 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.