Stellen Sie eine Verbindung zu Linux über den Namen und nicht über die IP her

18

Ich bin neu in Linux (derzeit unter Ubuntu 10.04) und habe gerade den SSH-Zugriff auf meinen Linux-Rechner eingerichtet. Derzeit muss ich ssh [email protected]zum Verbinden verwenden, wäre aber viel eher in der Lage, die IP gegen den Computernamen (wie in Windows mit \\name) oder einen Domainnamen (wie computername.example.com) auszutauschen .

Ich weiß nicht wirklich, wo ich anfangen soll, daher wäre jede Hilfe sehr willkommen. Bitte gehen Sie langsam, wie erwähnt - ich bin noch neu in diesem Bereich.


EDIT 1

Völlig vergessen zu erwähnen, dass ich versuche, eine Verbindung von Windows 7 (über PuTTY) herzustellen - sorry.

Ryall
quelle
Versuchen Sie, eine Verbindung nur von Ihrem LAN oder von einem beliebigen Ort auf der Welt aus herzustellen?
Karl Bielefeldt
6
Außerdem wird das Zulassen von Verbindungen über ssh als Root im Allgemeinen aus Sicherheitsgründen als schlechte Idee angesehen. Es wird empfohlen, sich als normaler Benutzer anzumelden und von dort aus su oder sudo zu verwenden.
Karl Bielefeldt
Sowohl mein LAN als auch die Welt (obwohl ich denke, dass ich weiß, wie man den Weltzugang einrichtet, so dass diese Frage mehr für das LAN gilt) - und das root @ war mehr als alles andere ein Beispiel - ich benutze tatsächlich einen Benutzer.
Ryall
Viele tolle Antworten - danke an alle - obwohl ich eine auswählen musste, um die detailliertesten auszuwählen.
Ryall

Antworten:

36

LAN-Erkennungsprotokolle ohne Konfiguration, in der Reihenfolge ihrer Präferenz:

  • mDNS
    • Wird hauptsächlich von Apple-Produkten und einigen Linux-Programmen verwendet, ist aber auch für Windows und möglicherweise für andere Plattformen verfügbar. verwendet IP-Multicast.
    • Bietet sowohl eine Namenssuche als auch eine Diensterkennung.
    • Hostnamen sind immer in der Form name.local.
    • Software:
      • nativ unterstützt unter Windows 10.1709 und höher (muss über die Registrierung aktiviert werden);
      • Bonjour unter älteren Windows;
      • Avahi mit nss_mdnsunter Linux;
      • nativ unterstützt auf OS X und iOS (und angeblich Android).
  • LLMNR
    • Wird für die Namensauflösung von Windows Vista und höher als moderne Alternative zu NetBIOS-Namensdiensten verwendet.
    • Sehr ähnlich zu mDNS, hat aber weniger Funktionen - insbesondere mangelt es an Diensterkennung (Windows verwendet dafür das WS-Erkennungsprotokoll).
    • Verwendet nackte Hostnamen (wie NBNS, aber anders als mDNS).
    • Software:
      • Nativ unterstützt von Windows Vista und höher;
      • systemd-resolvedmit nss_resolve(Teil von Systemd 216) unter Linux. .
  • NetBIOS- Namensdienste
    • Ein Teil der alten NetBIOS-Netzwerkprotokollsuite, die von Windows, OS / 2, MS-DOS ... verwendet wird. Wird noch verwendet. Keine Ausrede, um es in neuen Netzwerken einzusetzen.
    • Bietet Namensauflösung und (in gewissem Umfang) Diensterkennung - auch bekannt als "Netzwerkumgebung" oder "Netzwerkumgebung" in Windows.
    • Verwendet IPv4-Broadcasts (etwas gesprächig) und hat ein eigenes komplexes und dummes "Browser-Wahl" -Protokoll, um die Gesprächigkeit zu reduzieren. Überhaupt keine IPv6-Unterstützung.
    • Software:
      • Nativ unterstützt unter Windows und OS / 2;
      • nmbdmit nss_wins(Teil von Samba ) unter Linux und BSD;
      • Anscheinend unterstützt OS X es auch von Haus aus?

Für Sie häufig vorkonfigurierte Methoden:

  • DNS unter Verwendung eines lokalen (internen) Domainnamens
    • Bei Heim-Gateways ist dies in der Regel als Teil des lokalen DNS-Cache integriert. Häufig handelt es sich nur um ein reguläres dnsmasqGateway, das Sie manuell ausführen können, wenn Sie ein Linux / BSD-basiertes Gateway einrichten.
    • Sie nehmen den Hostnamen aus Ihrer DHCP-Anfrage, registrieren ihn in dnsmasq unter einer Domain wie homeund bieten sich als Haupt-DNS-Server an (fungieren als DNS-Cache).
    • Funktioniert standardmäßig mit den meisten Betriebssystemen, jedoch nur mit DHCP (das Gateway kennt keine Hostnamen von statischen IP-Hosts) und ist meiner Erfahrung nach im Allgemeinen eher unzuverlässig.
    • Software:
      • Ein regulärer DHCP-Client auf den Hosts. Muss die Hostname-Option senden.
      • dnsmasqauf dem Gateway. (Größere Setups könnten dhcpd+ verwenden named.)

Methoden zur manuellen Konfiguration:

  • DNS unter Verwendung Ihres eigenen Domainnamens
    • Funktioniert überall. (Hilft Ihnen jedoch nicht, eine Verbindung über das Internet herzustellen.)
    • Dynamisches DNS möglich, wenn Sie DHCP verwenden und einen DNS-Server steuern. Ansonsten sind alle Daten statisch.
    • Benötigen Sie einen Domain-Namen (der ein paar Dollar kosten wird).
  • kostenlose DNS-Subdomains
    • Immer noch DNS, nur kostenlos (oder viel billiger als eine Domain), aber auch ziemlich begrenzt. Dienstleistungen wie FreeDNS und Dyn Angebot Registrierung einzelner Subdomains unter einer Domäne steuern sie (zum Beispiel myhost.dyndns.com).
      • Viel zu oft wurde die Subdomain bereits von jemand anderem ausgewählt ...
    • Dynamische DNS-Updates sind häufig zulässig (DynDNS-Stil).
  • /etc/hosts
    • Eine Textdatei mit einer Liste von IP-Adresse-Hostnamen-Paaren, die auf jedem Client-Computer manuell konfiguriert werden muss.
    • ( %SystemRoot%\system32\drivers\etc\hostsunter Windows)
  • SSH-Konfiguration
    • Das Feld "Hostname" in PuTTY oder ~/.ssh/configunter OpenSSH.
    • Muss manuell konfiguriert werden.
  • PostIt-Notizen auf Ihrem Schreibtisch
    • Sehr günstig. Keine Namensrichtlinie. Unendliche Datentypen.
    • Eher unzuverlässig. Muss manuell verteilt werden. Keine TTL, was oft dazu führt, dass veraltete Informationen monatelang zwischengespeichert werden, bis jemand etwas merkt. Abfragealgorithmen sind ineffizient. Antworten auf Anfragen gehen leicht verloren und hinterlassen manchmal nur einen Klebebericht auf Ihrem Monitor. (Drei Monate später finden Sie sie möglicherweise gepuffert hinter Ihrem Schreibtisch.)
user1686
quelle
7
Haha, ich mag die PostIt Notes-Option :)
Ryall
1
+1 für mDNS / Avahi. Avahi ist in vielen Distributionen standardmäßig installiert, kann jedoch eine Paketinstallation für Sie sein.
Broam
1
In Debian müssen Sie Avahi manuell installieren.
Martin Ueding
2
@ Grawity Gute Antwort. Eine Sache, die verbessert werden muss: Beachten Sie, dass lokales DNS / DHCP ohne eine registrierte Domain einwandfrei funktioniert. Wirf einfach einen Raspberry PI unter deinen Schreibtisch und richte einen kleinen Server mit zB dnsmasq ein.
Paradoxon
1
@paradoxon: Danke, das habe ich vergessen zu erwähnen. (Auf den meisten Heim-Gateways wird bereits dnsmasq oder etwas Ähnliches ausgeführt, aber es ist schlechter.)
user1686
4

Zwei Optionen.

  • Alle Leistungen:

Gib einen Eintrag dafür ein /etc/hosts. Berühren Sie keine vorhandenen Linien, sondern fügen Sie eine neue hinzu.

  • nur ssh:

Fügen Sie eine HostZeilengruppe ~/.ssh/configmit dem Namen hinzu, den Sie verwenden möchten, und fügen Sie die gewünschten Optionen darunter hinzu. Sehen Sie man 5 ssh_configfür weitere Details.

Host myserver
    Hostname 192.168.123.234
    Protocol 2
Ignacio Vazquez-Abrams
quelle
4

Wenn Sie von einem beliebigen Computer aus auf die Linux-Box zugreifen möchten, benötigen Sie einen Domänennamen. Verwenden Sie einen dynamischen DNS-Dienst, um einen Domänennamen auf Ihren Linux-Computer (oder den Router, mit dem er verbunden ist) zu verweisen. Sobald Sie dies eingerichtet haben, haben Sie den zusätzlichen Vorteil, dass Sie sich keine Sorgen mehr machen müssen, ob sich die IP-Adresse Ihres Linux-Computers jemals ändert.

M456
quelle
1
Um dies zu verdeutlichen, kann sich die IP-Adresse des Computers noch ändern (abhängig davon, wie Ihr Internetdienstanbieter diese Informationen verwaltet), Sie müssen sich jedoch keine Gedanken darüber machen, da der dynamische DNS-Dienst einen Domänennamen bereitstellt, der immer der aktuellen Adresse entspricht Die IP-Adresse des Computers lautet.
David Z
4

Ab Windows 7 (gemäß Ihrer Bearbeitung) ...

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

Wenn der Editor gestartet wird, gehen Sie zum Ende der Datei und fügen Sie Ihre IP-Adresse und Ihren Hostnamen hinzu:

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

Speichern Sie die Datei und versuchen Sie, sie an einer Eingabeaufforderung als Ping zu senden:

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

Dies funktioniert nur in Ihrem LAN. Die Verbindung von "der Welt" (wie Sie kommentiert haben) ist eine völlig andere Sache, die DNS (dyndns, godaddy, etc) und Routerkonfiguration wie (NAT) Network Address Translation et al. Beinhaltet.

Matt
quelle
2

Sie werden Samba oder Winbind untersuchen wollen. Mein Linux-Netzwerk (einschließlich des Routers) kann über den Hostnamen miteinander kommunizieren, aber ich bin mir nicht sicher, wie ich Windows den Namen eines Linux-Computers mitteilen soll.

Broam
quelle
1
Mein Netzwerk tut dies aufgrund von Avahi (Zeroconf Networking). Ich kenne die Funktionsfähigkeit eines Zeroconf-Clients / -Servers unter Windows nicht.
Broam
1

Ich benutze auch Ubuntu 10.04 und kann mich mit meinem Rechner unter dessen Namen verbinden. Angenommen, ich habe Computer namens ernie und bert, die sich im selben Netzwerk befinden:

Meine Eingabeaufforderung sieht bei ernie so aus:

ernie:~$ 

Wenn ich das tippe:

ernie:~$ ssh [email protected]

Ich werde auf Bert root sein:

bert:~#

Ich mache das zwischen zwei Ubuntu-Maschinen, aber ich würde vermuten, dass es auch in Putty funktionieren würde. (Ich weiß nicht, wie ich mich mit Windows von Ubuntu aus verbinden soll, siehe andere Antworten zu Samba.)

Sie müssen sshd in Ubuntu installieren, damit dies funktioniert: sudo apt-get install openssh-server

idbrii
quelle
1
Dies liegt an Avahi, einem Zeroconf-Daemon, der standardmäßig installiert ist. Es wird ihm unter Windows nicht helfen, es sei denn, er hat einen Client aus einem anderen Grund (vielleicht installiert iTunes einen? Ich kann nicht sagen.)
Broam