Підключіться до 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) - вибачте.


Чи намагаєтесь ви підключитися просто з вашої локальної мережі чи з будь-якої точки світу?
Карл Білефельдт

6
Крім того, FYI, що дозволяє здійснювати з'єднання через ssh як root, як правило, вважається поганою ідеєю безпеки. Рекомендується увійти як звичайний користувач і використовувати там su або sudo.
Карл Білефельдт

І моя локальна мережа, і світ (хоча я думаю, що я знаю, як налаштувати доступ у світову мережу, щоб це питання більше стосувалося локальної мережі) - і root @ був більше прикладом, ніж будь-що - я насправді використовую користувача.
Ryall

Безліч чудових відповідей - дякую всім - хоча мені довелося вибрати одну, тому я вибрав найбільш детальну.
Ryall

Відповіді:


36

Протоколи виявлення нульової конфігурації локальної мережі в порядку уподобання:

  • mDNS
    • Використовується в основному продуктами Apple і деякими програмами Linux, але також доступним для Windows та, можливо, інших платформ; використовує IP багатоадресову передачу
    • Забезпечує пошук імен та виявлення послуги.
    • Імена хостів завжди є у формі name.local.
    • Програмне забезпечення:
      • підтримується у Windows 10.1709 та новіших версіях (має бути ввімкнено через Реєстр);
      • Bonjour на старих Windows;
      • Avahi з 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 ... Досі використовується. Не привід починати використовувати його в нових мережах.
    • Забезпечує роздільну здатність імен та (певною мірою) службове відкриття - aka "Мережеве сусідство" або "Мої мережеві місця" в 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/configOpenSSH.
    • Потрібно налаштувати вручну.
  • PostIt нотатки по всьому столу
    • Дуже дешевий. Немає політики іменування. Нескінченні типи даних.
    • Досить ненадійний. Потрібно розподілити вручну. Немає TTL, що часто призводить до того, що застаріла інформація кешується місяцями, поки хтось не помітить. Алгоритми запитів неефективні. Відповіді на запити, як правило, легко втрачаються, іноді залишаючи лише клей запис на моніторі. (Через три місяці ви можете знайти їх за столом.)

7
Ха-ха, мені подобається варіант PostIt notes :)
Ryall

1
+1 для mDNS / Avahi. Avahi встановлено за замовчуванням у багатьох дистрибутивах, але це може бути встановлення пакету для вашого.
Брам

1
У Debian вам доведеться встановити Avahi вручну.
Мартін Удінг

2
@grawity Гарна відповідь. Однак слід покращити одне: майте на увазі, що локальний DNS / DHCP прекрасно працює без зареєстрованого домену. Просто киньте PI Raspberry під свій стіл і встановіть невеликий сервер, наприклад, dnsmasq.
парадоксон

1
@paradoxon: Дякую, я забув це згадати. (Більшість домашніх шлюзів вже запускають dnsmasq або щось подібне, але crappier.)
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 постійно змінюватиметься.


1
Для уточнення, IP-адреса комп'ютера може все-таки змінюватися (залежно від того, як ваш Інтернет-провайдер управляє цими матеріалами), але вам не доведеться хвилюватися з цього приводу, оскільки динамічна служба DNS надає доменне ім’я, яке завжди відображається в залежності від поточного IP-адреса комп’ютера є.
David 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), переклад мережевої адреси та ін.


2

Ви хочете дослідити Самба чи Вінбінд. Моя мережа all-Linux (включаючи маршрутизатор) може спілкуватися один з одним за ім'ям хоста, але я не знаю, як сказати Windows, що таке ім’я машини Linux.


1
Моя мережа робить це через Avahi (мережа Zeroconf). Я не знаю життєздатності клієнта / сервера Zeroconf в Windows.
Брам

1

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

Моя підказка виглядає так на Ernie:

ernie:~$ 

Якщо я напишу це:

ernie:~$ ssh root@bert.local

Я буду корінням на берті:

bert:~#

Я роблю це між двома машинами ubuntu, але я б припустив, що він також буде працювати в шпаклівці. (Я не знаю про підключення до Windows з Ubuntu, дивіться інші відповіді про самбу.)

Для цього вам потрібно встановити sshd в Ubuntu: sudo apt-get install openssh-server


1
Це через Avahi, демон Zeroconf, який встановлений за замовчуванням. Це не допоможе йому в Windows, якщо тільки у нього немає клієнта через якусь іншу причину (можливо, iTunes встановлює його? Не можу сказати.)
Брум
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.