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

Stellen Sie eine SSH-Verbindung zwischen Windows und Linux her

Das Secure Shell Protocol (SSH) ist in der Linux-Welt die gebräuchlichste Methode zur Steuerung entfernter Rechner über die Kommandozeile. SSH ist ein echtes Linux-Original und wird auch in der Windows-Welt immer beliebter. Es gibt sogar eine offizielle Windows-Dokumentation für SSH, die die Steuerung von Windows-Rechnern mit OpenSSH behandelt.

Dieser Artikel beschreibt, wie Sie mit dem beliebten Open-Source-Tool PuTTY eine SSH-Verbindung von einem Windows-Rechner zu einem Fedora-33-Linux-System herstellen.

Möglichkeiten zur Verwendung von SSH

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

SSH verwendet eine Client-Server-Architektur, bei der ein SSH-Client eine Verbindung zu einem SSH-Server herstellt. Der SSH-Server läuft normalerweise als System-Daemon, daher wird er oft als SSHD bezeichnet. Kaum eine Linux-Distribution, die nicht mit dem SSH-Daemon ausgeliefert wird. In Fedora 33 ist der SSH-Daemon installiert, aber nicht aktiviert.

Sie können SSH verwenden, um fast jeden Linux-Computer zu steuern, unabhängig davon, ob er als virtueller Computer oder als physisches Gerät in Ihrem Netzwerk ausgeführt wird. Ein häufiger Anwendungsfall ist die Headless-Konfiguration von eingebetteten Geräten, einschließlich des Raspberry Pi. SSH kann auch zum Tunneln anderer Netzwerkdienste verwendet werden. Da der SSH-Verkehr verschlüsselt ist, können Sie SSH als Transportschicht für jedes Protokoll verwenden, das standardmäßig keine Verschlüsselung bereitstellt.

In diesem Artikel erkläre ich vier Möglichkeiten, SSH zu verwenden:1. wie man den SSH-Daemon auf der Linux-Seite konfiguriert, 2. wie man eine Remote-Konsolenverbindung einrichtet, 3. wie man Dateien über das Netzwerk kopiert und 4 . wie man ein bestimmtes Protokoll über SSH tunnelt.

1. SSHD konfigurieren

Das Linux-System (in meinem Fall Fedora 33) fungiert als SSH-Server, der es dem PuTTY-SSH-Client ermöglicht, eine Verbindung herzustellen. Überprüfen Sie zunächst die SSH-Konfiguration des Daemons. Die Konfigurationsdatei befindet sich unter /etc/ssh/sshd_config und enthält viele Schalter, die durch Auskommentieren verwandter Zeilen aktiviert werden können:

#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Die Standardkonfiguration, bei der keine Zeile unkommentiert ist, sollte für dieses Beispiel funktionieren. Prüfen Sie, ob der SSH-Daemon bereits läuft, indem Sie systemctl status sshd eingeben :

$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 577 (sshd)
    Tasks: 1 (limit: 26213)
   CGroup: /system.slice/sshd.service
           └─577 /usr/sbin/sshd -D [email protected],chacha20-[...]

Wenn es inaktiv ist, starten Sie es mit systemctl start sshd Befehl.

2. Richten Sie eine Remote-Konsole ein

Laden Sie unter Windows das PuTTY-Installationsprogramm herunter, installieren Sie es und öffnen Sie es. Sie sollten ein Fenster wie dieses sehen:

Im Hostnamen (oder IP-Adresse) Eingabefeld geben Sie die Verbindungsinformationen für Ihr Linux-System ein. In diesem Beispiel richte ich eine virtuelle Fedora 33-Maschine mit einem Bridged-Netzwerkadapter ein, mit dem ich das System unter der IP-Adresse 192.168.1.60 kontaktieren kann . Klicken Sie auf Öffnen , und ein Fenster wie dieses sollte sich öffnen:

Dies ist ein SSH-Sicherheitsmechanismus, um einen Man-in-the-Middle-Angriff zu verhindern. Der Fingerabdruck in der Nachricht sollte mit dem Schlüssel auf dem Linux-System unter /etc/ssh/ssh_host_ed25519_key.pub. übereinstimmen . PuTTY gibt den Schlüssel als MD5-Hash aus. Um seine Authentizität zu überprüfen, wechseln Sie zum Linux-System, öffnen Sie eine Befehlsshell und geben Sie ein:

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub

Die Ausgabe sollte mit dem von PuTTY angezeigten Fingerabdruck übereinstimmen:

$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)

Bestätigen Sie die PuTTY-Sicherheitswarnung, indem Sie auf Ja klicken . Der Fingerabdruck des Hostsystems befindet sich nun in PuTTYs Vertrauensliste, die sich in der Windows-Registrierung unter:

befindet
HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys

Geben Sie Ihre korrekten Anmeldeinformationen ein und Sie sollten sich auf der Konsole in Ihrem Home-Verzeichnis befinden:

3. Dateien über das Netzwerk kopieren

Zusätzlich zur Remote-Konsole können Sie PuTTY verwenden, um Dateien per SSH zu übertragen. Suchen Sie im Installationsordner unter C:\\Program Files (x86)\\PuTTY und finden Sie pscp.exe . Damit können Sie Dateien von und zu einem Linux-System kopieren.

Öffnen Sie eine Eingabeaufforderung mit Windows + R und geben Sie cmd ein . Kopieren Sie die Datei MyFile.txt von Ihrem Linux-Benutzer-Home-Verzeichnis in Ihr Windows-Home-Verzeichnis, indem Sie Folgendes eingeben:

C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .

Geben Sie Folgendes ein, um eine Datei aus dem Windows-Home-Verzeichnis in das Linux-Benutzer-Home-Verzeichnis zu kopieren:

C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/

Wie Sie vielleicht schon herausgefunden haben, ist die allgemeine Struktur des Kopierbefehls:

pscp.exe <source> <target>

4. Ein Protokoll tunneln

Stellen Sie sich vor, Sie haben einen Linux-Rechner, der einen HTTP-basierten Dienst für eine beliebige Anwendung ausführt. Sie möchten von Ihrem Windows-Computer aus über das Internet auf diesen HTTP-Dienst zugreifen. Natürlich können Sie den zugehörigen TCP-Port nicht öffentlich zugänglich machen, weil:

  1. Auf dem Server läuft HTTP, nicht HTTPS
  2. Es gibt überhaupt keine Benutzerverwaltung oder Anmeldung

Auf den ersten Blick scheint es eine unmögliche Aufgabe zu sein, diese Architektur einzurichten, ohne eine schreckliche Sicherheitslücke zu produzieren. Aber SSH macht es relativ einfach, eine sichere Lösung für dieses Szenario einzurichten.

Ich werde dieses Verfahren mit meinem Softwareprojekt Pythonic demonstrieren. Als Container ausgeführt, stellt Pythonic zwei TCP-Ports bereit:TCP-Port 7000 (Haupteditor) und TCP-Port 8000 (der Quellcode-Editor des Code-Servers).

Um Pythonic auf einem Linux-Rechner zu installieren, führen Sie Folgendes aus:

podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic

Wechseln Sie zu Ihrem Windows-Rechner, öffnen Sie PuTTY und navigieren Sie zu Verbindung -> SSH -> Tunnel . Fügen Sie die beiden TCP-Ports hinzu, die Sie weiterleiten möchten:

  • Quelle:7000 / Ziel:localhost:7000
  • Quelle:8000 / Ziel:localhost:8000

Gehen Sie dann zurück zur Sitzung Abschnitt und stellen Sie wie zuvor eine SSH-Verbindung her. Öffnen Sie einen Browser und navigieren Sie zu http://localhost:7000; Sie sollten einen Bildschirm wie diesen sehen:

Sie haben die Portweiterleitung erfolgreich konfiguriert!

Warnung :Wenn Sie den TCP-Port 22 öffentlich zugänglich machen, verwenden Sie keine leicht zu erratenden Anmeldeinformationen. Sie erhalten Anmeldeversuche aus der ganzen Welt, die versuchen, mit allgemeinen Standard-Anmeldeinformationen auf Ihren Linux-Computer zuzugreifen. Erlauben Sie stattdessen nur bekannten Clients, sich anzumelden. Diese Anmeldeeinschränkung kann mithilfe der Kryptografie mit öffentlichen Schlüsseln erreicht werden, die ein Schlüsselpaar verwendet, bei dem der öffentliche Schlüssel auf dem SSH-Hostcomputer gespeichert ist und der private Schlüssel beim Client verbleibt.

Debugging

Wenn Sie Schwierigkeiten haben, sich mit Ihrem Linux-Rechner zu verbinden, können Sie die Prozesse in Ihrem SSH-Daemon mit verfolgen:

journalctl -f -u sshd

So sieht ein gewöhnlicher Anmeldevorgang mit LogLevel DEBUG aus:

Weitere Informationen

Dieser Artikel hat kaum an der Oberfläche gekratzt, wie SSH verwendet werden kann. Wenn Sie nach Informationen zu einem bestimmten Anwendungsfall suchen, können Sie diese wahrscheinlich unter den unzähligen SSH-Tutorials im Internet finden. Ich verwende PuTTY intensiv bei der Arbeit, weil seine einfache Konfiguration und gute Interoperabilität zwischen Betriebssystemen es zu einem Schweizer Taschenmesser-Tool für Konnektivitätslösungen machen.


Linux
  1. So konfigurieren Sie den SAMBA-Server und übertragen Dateien zwischen Linux und Windows

  2. Windows- und Linux-Interoperabilität:Ein Blick auf Samba

  3. Windows – Freigegebener Ordner zwischen Qemu Windows Guest und Linux Host?

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

  5. 11 Nützliche „ssh“- und „scp“-Befehle unter Linux

Mit NitroShare können Sie Dateien ganz einfach zwischen Linux, Windows und Mac austauschen

So teilen Sie Steam-Spieldateien zwischen Linux und Windows

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

Ein Windows-Typ in einer Linux-Welt:VS-Code und Remote-SSH

Freigabe von Dateien zwischen Linux Mint und Windows 10

unterschied zwischen netstat und ss unter linux?