Remotezugriff mit SSH

Verwenden Sie SSH-Verbindungen, um sicher auf Remote-Ressourcen, Netzwerke und Anwendungen zuzugreifen.

Remotezugriff auf Services und Netzwerke mit SSH

Die SSH-Portweiterleitung, auch als SSH-Tunneling bezeichnet, transportiert Daten sicher über eine verschlüsselte SSH-Verbindung zwischen einem lokalen und einem Remote-System. Nachdem ein SSH-Tunnel eingerichtet wurde, horcht der SSH-Client auf einem angegebenen lokalen Port und leitet den an diesem Port ankommenden Traffic über die Verbindung an den entsprechenden Remoteport weiter.

Durch die Verschlüsselung von Daten während der Übertragung stellt die SSH-Portweiterleitung sicher, dass vertrauliche Informationen sicher und unzugänglich sind, ermöglicht den sicheren Zugriff auf Remote-Services und Netzwerke, ohne dass das Internet direkt in Anspruch genommen wird, und umgeht Firewalls und Netzwerkeinschränkungen.

Die drei Haupttypen der SSH-Portweiterleitung sind:

Mit der Portweiterleitung können Sie auf einen Service zugreifen, der nicht der öffentlichen Netzwerkschnittstelle zugänglich ist. Sie können einen lokalen Port für den Zugriff auf einen Service (z. B. eine Datenbank) auf einem Remoteserver einrichten. Die Datenbank auf dem Server ist nicht der öffentlichen Netzwerkschnittstelle zugänglich. Sie können jedoch einen Tunnel von einem lokalen Rechner zum internen Datenbankserverport erstellen. Anschließend können Sie eine Verbindung zu localhost herstellen, und der gesamte Traffic wird über den SSH-Tunnel zur Remote-Datenbank weitergeleitet.

Mit der Reverse Port-Weiterleitung können Sie jemandem außerhalb des lokalen Netzwerks Zugriff auf einen internen Service gewähren. Beispiel: Sie möchten einem anderen Entwickler eine Webanwendung anzeigen, die Sie auf dem lokalen Rechner entwickelt haben. Da der Rechner keine öffentliche IP hat, kann der andere Entwickler nicht über das Internet auf die Anwendung zugreifen. Wenn Sie jedoch Zugriff auf einen Remote-SSH-Server haben, können Sie die Reverse Port-Weiterleitung einrichten, um dem Entwickler Zugriff zu gewähren.

Portweiterleitung auf Server konfigurieren

So konfigurieren Sie die SSH-Portweiterleitung:

  1. Über eine Befehlszeile mit administrativen Berechtigungen melden Sie sich mit SSH bei der Instanz an.
  2. Bearbeiten Sie die Datei /etc/ssh/sshd_config. Prüfen Sie mindestens die folgenden Parameter:
    • AllowTCPForwarding

      Ermöglicht die TCP-Portweiterleitung. Wenn keine Angabe gemacht wird, ist der Standardwert yes, der einzelne TCP-Port-Weiterleitungen und SOCKS-Proxying ermöglicht

    • AllowStreamLocalForwarding

      Ermöglicht die Weiterleitung von UNIX-Domain-Sockets. Wenn keine Angabe gemacht wird, lautet der Standardwert yes.

Lokale Portweiterleitung

Bei der lokalen Portweiterleitung über SSH wird ein lokaler Port auf dem Clientsystem einem Remoteport auf dem Serversystem zugeordnet. Mit dieser Konfiguration können Sie auf Services auf dem Remote-System zugreifen, die andernfalls nicht zugänglich sind, weil die Services möglicherweise hinter einer Firewall ausgeführt werden oder nicht über eine öffentliche Netzwerkschnittstelle horchen.

Um einen direkten TCP-Weiterleitungstunnel zu erstellen, verwenden Sie die ssh-Option -L:

ssh -L <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • bind_address

    Optional und weist eine lokale Schnittstelle zu, um auf Verbindungen zu horchen. Wenn keine Angabe gemacht wird, bindet ssh nur an die Loopback-Schnittstellen. Zum Binden an alle Schnittstellen können Sie "0.0.0.0" oder "::" verwenden.

  • port

    Die lokale Portnummer. Sie können eine beliebige Portnummer verwenden, die größer als 1024 ist.

  • destination

    Die IP oder der Hostname des Zielrechners. Wenn sich das Ziel auf dem Remoteserver selbst befindet, können Sie localhost verwenden.

  • destination_port

    Port auf dem Zielrechner.

  • user@remote_ssh_server

    Der Remote-SSH-Benutzer und die IP-Adresse des Servers.

Beispiel:

ssh -L <8080>:localhost:<8888> <user>@<129.145.0.164>

Dadurch wird eine SSH-Verbindung zum Remoteserver unter 192.168.1.20 geöffnet, und ein Tunnel zum localhost-Port 8888 wird geöffnet.

Dynamische Portweiterleitung

Verwenden Sie die dynamische Portweiterleitung, damit der SSH-Client auf einem angegebenen Binding-Port horcht und als SOCKS-Proxyserver fungiert. Sie müssen keinen Zielhost angeben, da alle eingehenden Verbindungen auf dem angegebenen Port über den Tunnel zu einem dynamischen Port auf dem Zielrechner weitergeleitet werden.

Um einen dynamischen Port vorwärts zu erstellen, verwenden Sie die ssh-Option -D.

ssh -D <bind_address>:<port> <user>@<remote_ssh_server>

Portweiterleitung umkehren

Ein Reverse Tunnel leitet jede Verbindung, die auf dem Remote-SSH-Server empfangen wird, an das lokale Clientnetzwerk weiter.

Um einen Reverse Port Forward zu erstellen, verwenden Sie die ssh-Option -R.

  • Für Reverse Forward des lokalen Ports:
    ssh -R <bind_address>:<port>:<destination>:<destination_port> <user>@<remote_ssh_server>
  • Für die dynamische Port-Rückwärtsweiterleitung:
    ssh -R <bind_address>:<port> <user>@<remote_ssh_server>

Remotezugriff auf X11-basierte Anwendungen mit SSH

Mit der X11-Weiterleitung können Sie eine SSH-Verbindung verwenden, um eine grafische X11-basierte Anwendung auf einem Remote-Oracle Linux-System zu starten und von einem lokalen System aus zu verwenden. Auf dem Remotesystem muss kein X11-Server oder eine grafische Desktopumgebung ausgeführt werden, auf dem lokalen System muss jedoch ein X11-kompatibler Service ausgeführt werden.

X11-Weiterleitung auf dem Remoteserver aktivieren

  1. Über eine Befehlszeile mit administrativen Berechtigungen melden Sie sich mit SSH bei der Instanz an.
  2. Aktivieren Sie X11Forwarding in der Datei /etc/ssh/sshd_config.

    Wenn X11Forwarding in /etc/ssh/sshd_config ausgelassen wird, ist der Standardwert no. Um die X11-Weiterleitung zu aktivieren, fügen Sie einen Eintrag hinzu, der den Wert für diesen Parameter auf yes setzt.

    X11Forwarding yes
  3. Installieren Sie die Packages X11:
    dnf install xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11
    Wenn Sie noch nie eine grafische Anwendung auf dem Remoteserver ausgeführt haben, wird bei der ersten Verbindung mit dem Remoteserver mit der X11-Weiterleitung eine Warnmeldung angezeigt:
    /usr/bin/xauth: file /home/user/.Xauthority does not exist

    Sie können diese Warnung als ignorieren . Xauthority-Datei wird automatisch erstellt.

  4. Starten Sie den sshd-Service neu, damit die Änderungen wirksam werden:
    sudo systemctl restart sshd.service

Anwendung mit der X11-Weiterleitung remote starten

  1. Melden Sie sich mit SSH beim Remoteserver an:
    ssh -X <user>@<server1.example.com>
    
    The authenticity of host 'remote-server (192.168.122.120)' can't be established.
    ECDSA key fingerprint is SHA256:uYwFlgtP/2YABMHKv5BtN7nHK9SHRL4hdYxAPJVK/kY.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  2. Geben Sie Ja ein.
    Warning: Permanently added 'remote-server' (ECDSA) to the list of known hosts.
  3. Starten Sie eine grafische Anwendung auf dem Remoteserver, die auf Ihrem lokalen System angezeigt wird. Beispiel: Um einen grafischen Texteditor wie gedit auszuführen, geben Sie Folgendes ein:
    gedit &
    Wenn Sie & (Ampersand) am Ende hinzufügen, wird die Anwendung im Hintergrund ausgeführt, sodass das Terminal für andere Befehle freigegeben wird.