Подключайтесь к Linux по имени, а не по IP

18

Я новичок в Linux (в настоящее время использую Ubuntu 10.04) и только что завершил настройку SSH-доступа к моей Linux-машине. В настоящее время я должен использовать ssh root@x.x.x.xдля подключения, но гораздо лучше иметь возможность поменять IP-адрес для имени компьютера (как в Windows с \\name) или доменного имени (например computername.example.com).

Я действительно не знаю, с чего начать, поэтому любая помощь будет наиболее ценной. Пожалуйста, идите медленно, как уже упоминалось - я все еще новичок в этом.


РЕДАКТИРОВАТЬ 1

Полностью забыл упомянуть, что я пытаюсь подключиться из Windows 7 (через PuTTY) - извините.

Ryall
источник
Вы пытаетесь подключиться только из своей локальной сети или из любой точки мира?
Карл Билефельдт
6
Кроме того, FYI, разрешающий соединения через ssh как root, обычно считается плохой идеей в плане безопасности. Рекомендуется войти в систему как обычный пользователь и использовать su или sudo оттуда.
Карл Билефельдт
И моя локальная сеть, и весь мир (хотя я думаю, что я знаю, как настроить доступ к миру, так что этот вопрос больше относится к локальной сети) - и root @ был большим примером, чем что-либо еще - я действительно использую пользователя.
Ryall
Множество отличных ответов - спасибо всем - хотя мне пришлось выбрать один, поэтому я выбрал наиболее подробный.
Ryall

Ответы:

36

Протоколы обнаружения локальной сети с нулевой конфигурацией, в порядке предпочтения:

  • MDNS
    • Используется в основном продуктами Apple и некоторыми программами Linux, но также доступен для Windows и, возможно, других платформ; использует многоадресную IP-рассылку.
    • Обеспечивает поиск имени и обнаружение службы.
    • Имена хостов всегда в форме name.local.
    • Програмное обеспечение:
      • изначально поддерживается в Windows 10.1709 и более поздних версиях (необходимо включить через реестр);
      • Добрый день на старых Windows;
      • Авахи с nss_mdnsLinux;
      • изначально поддерживается на OS X и iOS (и, предположительно, Android).
  • LLMNR
    • Используется для разрешения имен в Windows Vista и выше, как современная альтернатива службам имен NetBIOS.
    • Очень похоже на mDNS, но имеет меньше возможностей - в частности, отсутствует обнаружение службы (для этого Windows использует протокол WS-Discovery).
    • Использует голые имена хостов (например, NBNS, но в отличие от mDNS).
    • Програмное обеспечение:
      • Изначально поддерживается Windows Vista и более поздними версиями;
      • systemd-resolvedс nss_resolve(часть systemd 216) в Linux. ,
  • Службы имен NetBIOS
    • Часть старого набора сетевых протоколов NetBIOS, используемого Windows, OS / 2, MS-DOS ... Все еще используется. Не оправдание, чтобы начать использовать его в новых сетях.
    • Обеспечивает разрешение имен и (до некоторой степени) обнаружение служб - так называемое «Сетевое окружение» или «Мои сетевые окружения» в Windows.
    • Использует широковещательные рассылки IPv4 (несколько болтливый) и имеет собственный сложный и глупый протокол «выбора браузера» для уменьшения болтливости. Нет поддержки IPv6 вообще.
    • Програмное обеспечение:
      • Изначально поддерживается в Windows и OS / 2;
      • nmbdс nss_wins(часть Samba ) в Linux и BSD;
      • Судя по всему, OS X также поддерживает его изначально?

Методы, которые часто предварительно настроены для вас:

  • DNS с использованием локального (внутреннего) доменного имени
    • Домашние шлюзы, как правило, имеют это встроенное, как часть локального кеша DNS. Часто это просто регулярно dnsmasq, что вы можете запустить вручную, если вы настраиваете шлюз на базе Linux / BSD.
    • Они берут имя хоста из вашего запроса DHCP, регистрируют его в dnsmasq в домене homeи предлагают себя в качестве основного DNS-сервера (выступают в качестве кеша DNS).
    • По умолчанию работает с большинством операционных систем, но только с DHCP (шлюз не знает имен хостов статических IP-адресов), и, как правило, в моем случае это довольно странно.
    • Програмное обеспечение:
      • Обычный DHCP-клиент на хостах. Необходимо отправить опцию имени хоста.
      • dnsmasqна воротах. (Большие установки могут использовать dhcpd+ named.)

Методы, включающие ручную настройку:

  • DNS используя ваше собственное доменное имя
    • Работает везде ( Тем не менее, это не поможет вам на самом деле подключиться через Интернет.)
    • Динамический DNS возможен, если вы используете DHCP и управляете DNS-сервером; в противном случае все данные являются статическими.
    • Необходимо иметь доменное имя (которое будет стоить несколько долларов).
  • бесплатные субдомены DNS
    • Все-таки DNS, просто бесплатный (или намного дешевле, чем домен), но тоже довольно ограниченный. Такие сервисы, как FreeDNS и Dyn, предлагают регистрацию отдельных поддоменов под доменом, который они контролируют (например,myhost.dyndns.com ).
      • Слишком часто поддомен уже был выбран кем-то другим ...
    • Динамические DNS-обновления часто разрешены (в стиле DynDNS).
  • /etc/hosts
    • Текстовый файл с указанием IP-адреса - пары имен хостов, которые необходимо настроить вручную на каждом клиентском компьютере.
    • ( %SystemRoot%\system32\drivers\etc\hostsв Windows)
  • Конфигурация SSH
    • Поле «Имя хоста» в PuTTY, или ~/.ssh/config в OpenSSH.
    • Должен быть настроен вручную.
  • PostIt заметки всему вашему столу
    • Очень дешевый. Нет политики именования. Бесконечные типы данных.
    • Скорее ненадежный. Должен быть распределен вручную. Нет TTL, что часто приводит к тому, что устаревшая информация кэшируется месяцами, пока кто-то не заметит. Алгоритмы запросов неэффективны. Ответы на запросы, как правило, легко теряются, иногда оставляя лишь клейкую запись на вашем мониторе. (Через три месяца вы можете найти их в буфере за вашим столом.)
user1686
источник
7
Ха-ха, мне нравится опция PostIt notes :)
Ryall
1
+1 для mDNS / Avahi. Avahi устанавливается по умолчанию во многих дистрибутивах, но может быть для вас установленным пакетом.
Broam
1
В Debian вам нужно будет установить Avahi вручную.
Мартин Уединг,
2
@ grawity Хороший ответ. Однако есть одна вещь, которую нужно улучшить: имейте в виду, что локальный DNS / DHCP прекрасно работает без зарегистрированного домена. Просто добавьте Raspberry PI под свой рабочий стол и настройте небольшой сервер, например, с помощью dnsmasq.
парадоксон
1
@paradoxon: Спасибо, я забыл упомянуть об этом. (Большинство домашних шлюзов уже запускают dnsmasq или что-то подобное, но более хреновое.)
user1686
4

Два варианта.

  • Все услуги:

Поместите запись для этого в /etc/hosts. Не трогайте существующие строки, добавьте новую.

  • только ssh:

Добавьте Hostраздел ~/.ssh/configс именем, которое вы хотите использовать, а затем добавьте нужные параметры под ним. Смотрите man 5 ssh_configдля более подробной информации.

Host myserver
    Hostname 192.168.123.234
    Protocol 2
Игнасио Васкес-Абрамс
источник
4

Если вы хотите получить доступ к Linux с любого компьютера, вам понадобится доменное имя. Используйте службу динамического DNS, чтобы указать доменное имя для вашего компьютера Linux (или маршрутизатора, к которому он подключен). После того, как вы это настроите, это даст вам дополнительное преимущество, так как вам не придется беспокоиться о том, что IP-адрес вашего компьютера с Linux постоянно меняется.

M456
источник
1
Просто чтобы уточнить, IP-адрес компьютера может все еще меняться (в зависимости от того, как ваш провайдер управляет этим материалом), но вам не придется об этом беспокоиться, поскольку служба динамического DNS предоставляет доменное имя, которое всегда сопоставляется с любым текущим IP-адрес компьютера есть.
Дэвид Z
4

Из Windows 7 (согласно вашему редактированию) ...

Start -> Run -> notepad c:\windows\system32\drivers\etc\hosts

Когда блокнот запустится, перейдите в конец файла и добавьте свой IP-адрес и имя хоста:

x.x.x.x    mylinuxhostname mylinuxhostname.domain.com

Сохраните файл, затем попробуйте пропинговать его из командной строки:

c:\> ping mylinuxhostname
c:\> ping mylinuxhostname.domain.com

Это будет работать только из вашей локальной сети. К нему подключается «мир» (согласно вашему добавленному комментарию) совершенно другой зверь, включающий DNS (dyndns, godaddy и т. Д.) И конфигурацию маршрутизатора, например (NAT), преобразование сетевых адресов и др.

Matt
источник
2

Вы захотите исследовать Samba или Winbind. Моя полностью Linux-сеть (включая маршрутизатор) может общаться друг с другом по имени хоста, но я не уверен, как сказать Windows, как называется Linux-машина.

Broam
источник
1
Моя сеть делает это из-за Avahi (сеть Zeroconf). Я не знаю жизнеспособности клиента / сервера Zeroconf в Windows.
Broam
1

Я также использую Ubuntu 10.04, и я могу подключиться к своим машинам, используя их имя. Скажем, у меня есть компьютеры с именами ernie и bert, которые находятся в одной сети:

Моя подсказка выглядит так на Эрни:

ernie:~$ 

Если я наберу это:

ernie:~$ ssh root@bert.local

Я буду рутом на берт

bert:~#

Я делаю это между двумя машинами Ubuntu, но я думаю, что это будет работать и в замазке. (Я не знаю, как подключиться к windows из Ubuntu, см. Другие ответы о samba.)

Вы должны установить sshd в Ubuntu, чтобы это работало: sudo apt-get install openssh-server

idbrii
источник
1
Это из-за Avahi, демона Zeroconf, который установлен по умолчанию. Это не поможет ему в Windows, если только у него нет клиента по какой-то другой причине (может быть, iTunes установит его? Я не могу сказать.)
Broam