GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verbinden und teilen Sie Daten zwischen zwei Linux-Systemen

Ich habe eine interessante Anfrage bekommen (nicht von Singles aus meiner Umgebung). Einer meiner Leser fragte mich, wie man zwei Linux-Kisten verbindet - ich nehme an, um sie zu teilen. Dies ist ein Thema, das ich häufig berührt habe, aber oft indirekt. Wie Kommandant Lasard von der Polizeiakademie sagen würde, gibt es viele, viele, viele, viele verschiedene Möglichkeiten, dies zu tun.

Vielleicht ist es also an der Zeit für ein richtiges Tutorial. Ich werde Ihnen einige gängige, robuste Möglichkeiten zeigen, wie zwei Linux-Systeme über das Netzwerk kommunizieren können. Wir werden dies auf der Befehlszeile tun, dann zu Dateimanagern aufsteigen und schließlich auch eine Remote-Datensicherung mit einem benutzerfreundlichen GUI-Tool durchführen. Fangen wir an.

Befehlszeile:SSH, SCP

Der "einfachste" Weg, zwei Linux-Systeme zu verbinden, ist die Verwendung des SSH-Protokolls. Es ist bequem, sicher und auf so ziemlich jedem Linux-System verfügbar. Nun, in einigen entfernten [sic] Fällen könnte es hier und da zu Interoperabilitätsproblemen aufgrund inkompatibler Softwareversionen kommen, aber insgesamt sollten Sie keine Probleme haben.

Ein Host fungiert als Server (öffnet standardmäßig TCP-Port 22). Der andere fungiert als Client. Sie können das SSH-Befehlszeilendienstprogramm verwenden, um eine Verbindung zum Server herzustellen und dort sogar Befehle auszuführen, sowohl remote als auch lokal, einschließlich administrativer Aufgaben (vorausgesetzt, Sie haben die richtigen Berechtigungen). Oder Sie können SCP verwenden, um Dateien sicher vom Client auf den Server zu kopieren oder sogar Dateien von den Servern zurück auf Ihren Client-Host abzurufen.

SSH-Server-Setup

Ich demonstriere mit einem Fedora 32-Server und einem Kubuntu 18.04-Client. Zuerst müssen wir die SSH-Dienstsoftware installieren und konfigurieren. Während die Anweisungen von Distribution zu Distribution leicht variieren können, ist das, was Sie hier sehen, im Großen und Ganzen so ziemlich alles, was Sie brauchen. Der einzige bemerkenswerte Unterschied ist der Paketname, der zur Identifizierung des SSH-Servers verwendet wird – in Fedora kommt er als openssh-server. Wenn Sie nach einem bestehenden sshd (ssh daemon =service) suchen, werden Sie nicht wirklich etwas finden.

Keine Übereinstimmung für Argument:sshd
Fehler:Keine Übereinstimmung gefunden:sshd

sudo dnf search ssh
...
openssh-ldap.x86_64 :Ein LDAP-Support für Open-Source-SSH-Server-Daemon
openssh-server.x86_64 :Ein Open-Source-SSH-Server-Daemon
openssh.x86_64 :Eine Open-Source-Implementierung der SSH-Protokollversion 2
...

Sobald openssh-server installiert ist, können Sie den Dienst starten. Normalerweise wird es standardmäßig beim Start ausgeführt, aber Sie können es auch jederzeit manuell starten oder neu starten (entweder über den Befehl oder das Startdienstskript), es wird jedoch nicht ausgeführt, wenn es keine SSH-Schlüssel hat (wodurch der Host eindeutig identifizierbar).

sshd
sshd re-exec erfordert die Ausführung mit einem absoluten Pfad

/usr/sbin/sshd
/etc/ssh/sshd_config:Zugriff verweigert

sudo /usr/sbin/sshd
sshd:keine Hostkeys verfügbar – wird beendet.

Wir müssen die Hostkeys generieren:

sudo ssh-keygen -A
ssh-keygen:Generieren neuer Hostschlüssel:RSA DSA ECDSA ED25519

Und jetzt wird openssh-server ausgeführt:

sudo /usr/sbin/sshd

ps -ef|grep ssh
roger 1832 1791 0 15:03 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/gnome-session"
root 3640 1675 0 15:17 ? 00:00:00 sshd:/usr/sbin/sshd [Zuhörer] 0 von 10-100 Starts

Netzwerkeinrichtung

Ich werde Ihnen zeigen, wie Sie zwei Boxen in einem lokalen Netzwerk verbinden. Geschäftsbedingungen gelten. Sie benötigen die beiden Hosts, um erreichbar zu sein (Firewall et al.). Das Öffnen eines Netzwerkports kann Auswirkungen auf die Sicherheit haben – weniger in einem lokalen Netzwerk, aber mehr in öffentlichen Netzwerken wie dem Internetz. Ich bin jedoch nicht hier, um über die Sicherheit Ihres Shi...-Zeugs zu diskutieren, sondern nur, um Ihnen zu zeigen, wie Sie zwei Boxen in Ihrem LAN-Setup verbinden. Für die Neugierigsten können Sie SSH jedoch härter machen, einschließlich Nicht-Root-Zugriff, nicht standardmäßige Portnutzung, Anmeldedrosselung, verschiedene andere Einschränkungen und so weiter.

Notieren Sie sich jetzt die IP-Adresse oder den Hostnamen Ihres Linux-Servercomputers. Bei "modernen" Distributionen ist das Auffinden der IP-Adresse nicht trivial, da netstat und ifconfig nicht mehr cool sind, aber es kann getan werden. Wir benötigen dies für den Client-Teil der Konnektivität.

Befehlszeile:SSH, SCP (Fortsetzung)

Stellen Sie auf dem Client eine Verbindung zu Ihrem Server her. Die Syntax lautet wie folgt:

ssh-Benutzername@Hostname

In meinem Beispiel ist dies also praktisch - Beachten Sie die Warnung bei der ersten Verbindung:

ssh [email protected]
Die Authentizität des Hosts '192.168.2.107 (192.168.2.107)' kann nicht festgestellt werden.
Der Fingerabdruck des ECDSA-Schlüssels ist SHA256:8Qk//cbC0v3BLuU1FQ/vjABNN34nw1sWANY+hoycHiE.
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)? ja
Warnung:„192.168.2.107“ (ECDSA) dauerhaft zur Liste der bekannten Hosts hinzugefügt.
Passwort von
[email protected]:
Letzter Login:Thu Sep 17 15:03:38 2020

Jetzt sind Sie "in" - Sie können jetzt Dinge auf Ihrem Server tun. Wir wollen aber auch Daten hin und her kopieren können. Dann nutzen wir SCP. Die Syntax lautet wie folgt:

scp-Quelle Benutzername@Hostname:Ziel

Der Befehl scp akzeptiert auch verschiedene nützliche Argumente – Sie können Ordner rekursiv durchsuchen, Berechtigungen beibehalten, eine Verbindung zu einem nicht standardmäßigen Port herstellen und vieles mehr. Interessanterweise, vielleicht ironischerweise, verwendet ssh den Kleinbuchstaben p, um den Port anzugeben (z. B.:-p 2222), während scp den Großbuchstaben p verwendet (z. B.:-P 2223). Bei scp wird der Kleinbuchstabe p verwendet, um die ursprünglichen Dateimodi und -zeiten beizubehalten. Dort.

scp -r /home/igor/Wallpapers/ [email protected]:/home/roger/Pictures/
Passwort von [email protected]:
wallhaven-156819.jpg 100% 166KB 500,8KB /s 00:00
wallhaven-448391.jpg 100 % 1606 KB 3,0 MB/s 00:00
wallhaven-12679.jpg 100 % 501 KB 5,4 MB/s 00:00
...

Im obigen Beispiel kopieren wir den Inhalt des Wallpapers-Verzeichnisses rekursiv in den Pictures-Ordner auf unserem Server. Sie können die Richtung des Datenflusses jederzeit umkehren (Quelle, Ziel).

Unbeaufsichtigte SSH-, SCP-Konnektivität

Wie Sie vielleicht oben bemerkt haben, wurde ich in meinem Beispiel nach einem Passwort gefragt. Dies ist gut für interaktives Arbeiten, kann jedoch umständlich sein, wenn Sie unbeaufsichtigte Sicherungen ausführen möchten, z. B. geplante Jobs über Nacht. Zu diesem Zweck müssen Sie das öffentlich-private SSH-Schlüsselpaar konfigurieren. Das verlinkte Tutorial erklärt dies gut.

Befehlszeile:rsync

Die offensichtlichsten Anwendungsfälle für die Konnektivität zwischen zwei Hosts sind Datensicherungszwecke. Sie möchten beispielsweise das Home-Verzeichnis auf Ihrer Workstation auf einen Archivserver kopieren. Wenn es um Backups geht, ist rsync ein hervorragendes Tool für diesen Job. Besser noch, Sie haben bereits eine Anleitung Ihres bedeutenden Autors, die erklärt, wie Sie rsync verwenden, um Datensicherungen zu konfigurieren.

Wir müssen die SSH-Komponente in die Gleichung einführen. Rsync unterstützt SSH nahtlos. Mit anderen Worten, alles bleibt gleich, außer wie Sie das Ziel definieren. Die SSH/SCP-Syntax zur Rettung:

rsync-Quelle Benutzername@Hostname:Ziel

Zum Beispiel:

rsync -avs --delete -i -h /home/igor/Wallpapers/ [email protected]:/home/roger/Pictures
Passwort von [email protected]:
Inkrementelle Dateiliste wird gesendet
*Lösche Screenshot_20200516-125442.png
*Lösche Screenshot_20200516-125302.png
*Lösche Screenshot_20200516-125252.png
...
*Lösche QEMU Virgil.txt
*Löschen von Fedora 32.txt
.d..tp..... ./

gesendet 11,16 MB empfangen 7,94 KB 2,03 MB/s
Gesamtgröße beträgt 11,15 MB Beschleunigung 1,00

Wieder einmal brauchen wir Schlüssel für eine nahtlose Konnektivität.

GUI-Konnektivität:Dolphin-Dateimanager

Wie gesagt, es gibt viele verschiedene Möglichkeiten, dies zu tun. Ich werde mit Dolphin demonstrieren, dem Standard-Dateimanager im Plasma-Desktop. Es unterstützt nativ SSH-Konnektivität, sodass Sie im Grunde das tun können, was wir zuvor getan haben, außer dass Sie es jetzt über die GUI und nicht über die Befehlszeile tun. Den feineren Details der Verwendung von Dolphin und SSH werde ich einen separaten Artikel widmen, daher hier zunächst eine gekürzte Version.

Dolphin verwendet das FISH-Protokoll, um eine Verbindung zu entfernten Hosts herzustellen. Drücken Sie in Dolphin Strg + L oder doppelklicken Sie auf die Positionszeile, um die Adressleiste anzuzeigen, und schreiben Sie dann:

fish://benutzername@ziel

Dolphin fragt jetzt nach einem Passwort - das Sie speichern können, und das war's. Sie sind mit dem Remote-Host verbunden und können beliebige Dateioperationen ausführen (innerhalb der SSH-Berechtigungen, die Ihr Benutzer hat und die der Server zulässt).

GUI-Backup:Grsync

Wir haben darüber schon einmal gesprochen. Grsync ist ein ausgezeichnetes rsync-Frontend-Dienstprogramm - mein Favorit. Sie können es verwenden, um eine oder mehrere Datenreplikationsaufgaben zu definieren, einschließlich verschiedener Optionen und Ausschlüsse. In der Zielzeile müssen Sie den Eintrag username@hostname:destination eingeben, genau wie Sie es mit rsync in einem Terminalfenster tun würden.

Sie können dann den Vorgang simulieren (Trockenlauf) oder eine echte Verbindung herstellen – mit dem zusätzlichen Vorteil, dass Sie die Anmeldeinformationen für die Verbindung speichern können, sodass Sie die Aufgabe erneut ausführen können, ohne sich erneut manuell authentifizieren zu müssen. Perfekt für geplante Datensicherungsaufgaben.

Schlussfolgerung

Na siehst du. Jetzt haben Sie vier verschiedene Möglichkeiten, Ihre Linux-Maschinen zu verbinden, darunter Befehlszeilen- und GUI-Methoden, passwortbasierte und passwortlose Authentifizierung, Datensicherungen und vieles mehr. Hinter den Kulissen ist alles SSH, aber das ist wirklich das Schöne daran.

Ich hoffe, Sie finden diesen Artikel nützlich und praktisch. Wenn Sie sicherstellen möchten, dass Ihre Linux-Boxen nahtlos miteinander kommunizieren, haben Sie die Werkzeuge, um Ihr eigener Chef zu sein. Für diejenigen, die mit der Befehlszeile vertraut sind, erledigen ssh, scp und rsync die Arbeit, aber wenn Sie mehr auf einfache Maus-Point-and-Click-Aktionen aus sind, bieten Dolphin und Grsync die notwendige Funktionalität. Nun, die Liste endet hier nicht. Sie können auch FTP, SFTP oder ein Programm wie Wormhole verwenden, und einige andere Linux-Dateimanager bieten auch SSH- und Rsync-Funktionalität, aber das ist wirklich ein Thema für einen anderen Artikel. Und das wäre alles für heute.


Linux
  1. Stellen Sie eine SSH-Verbindung zwischen Windows und Linux her

  2. So übertragen Sie Dateien zwischen zwei Computern mit den Befehlen nc und pv

  3. Linux – Wie wechselt man zwischen Tty- und Xorg-Sitzung?

  4. Linux – Dateien zwischen Linux-Host und Windows-Gast teilen?

  5. Wie verbinde und sende ich Daten an einen seriellen Bluetooth-Port unter Linux?

Wie verbinde ich mich mit Linux VPS über SSH von Linux und Windows OS?

Wie generiert und verwendet man einen SSH-Schlüssel in einem Linux-System?

So fügen Sie dem VS-Code einen SSH-Schlüssel hinzu und stellen eine Verbindung zu einem Host her

So konfigurieren Sie Synergy unter Linux, um Tastatur und Maus mit mehreren Systemen gemeinsam zu nutzen

Wie teilt man Dateien zwischen Ubuntu und Windows 10?

So installieren, konfigurieren und aktivieren Sie den SSH-Dienst unter Linux