Ssh: Unterschied zwischen den Versionen

Aus Foxwiki
 
(203 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Wozu dient SSH?==
Der Befehl '''ssh''' startet einen [[Secure Shell]]-Client zur Anmeldung an einem SSH-Server


*mit SSH (Secure Shell) bauen sie eine verschlüsselte Verbindung zu einem entfernten Rechner auf und können dort arbeiten
== Beschreibung ==
:es ermöglicht:
[[File:2024-01-19_12-32-54_UTC.jpg|mini]]
; ssh verbindet sich mit dem angegebenen Ziel und meldet sich dort an
* Es ist zur Bereitstellung sicherer, verschlüsselter Kommunikation zwischen zwei nicht vertrauenswürdigen Rechnern über ein unsicheres Netzwerk gedacht.
* Der Benutzer muss seine/ihre Identitität auf der fernen Maschine mittels einer von mehreren, nachfolgend beschriebenen Methoden nachweisen.


*Authentifizierung der Gegenstelle, kein Ansprechen falscher Ziele
; X11-Verbindungen
* beliebige TCP-Ports und UNIX-domain -Sockets können auch über den sicheren Kanal weitergeleitet werden.


*Verschlüsselung der Datenübertragung, kein Mithören durch Unbefugte
; Ausführung von Befehlen
* Falls ein Befehl angegeben ist, wird er auf dem fernen Rechner statt in einer Anmelde-Shell ausgeführt.
* Als Befehl kann eine komplette Befehlszeile angegeben werden oder er kann zusätzliche Argumente haben.
* Falls angegeben, werden die Argumente an den Befehl, durch Leerzeichen getrennt, angehängt, bevor er an den Server zur Ausführung gesandt wird.


*Datenintegrität, keine Manipulation der übertragenen Daten
== Installation ==
== Anwendung ==
=== X-Umleitung ===
siehe '''[[SSH/X-Forwarding]]'''


==Authentifizierung über Public-Keys==
=== Passwort-Authentifizierung erzwingen ===
* Testen der Passwort-Authentifizierung
* Die Authentifizierung mit öffentlichem Schlüssel wird hier abgeschaltet


*wem die Authentifizierung über Passwörter trotz der Verschlüsselung zu unsicher ist, der benutzt am besten das Public-Key-Verfahren
; ssh
*hierbei wird asymmetrische Verschlüsselung genutzt, um den Benutzer zu authentifizieren
$ ssh '''-o PreferredAuthentications=password -o PubkeyAuthentication=no''' user@host
*mit dem öffentlichen Schlüssel können die Daten verschlüsselt, aber nicht mehr entschlüsselt werden (Einwegfunktion)
*nur noch der Besitzer des privaten Schlüssels, also der richtige Empfänger kann die Daten entschlüsseln
*um dieses Verfahren verwenden zukönnen, muss man sich zunächst mit Hilfe des Kommandozeilenprogramms ssh-keygen ein entsprechendes Schlüsselpaar erzeugen:


ssh-keygen -t rsa -b 4096
; scp
*oder
  $ scp '''-o PreferredAuthentications=password -o PubkeyAuthentication=no''' DATEI user@host:DATEI
  ssh-keygen -t ed25519


:Der voreingestellte Dateiname (id_rsa) kann einfach mit der Taste ⏎ bestätigt werden, außer man möchte sich ein weiteres Schlüsselpaar erzeugen. Von der Benutzung einer leeren Passphrase ist jedoch abzuraten, weil sonst jeder, der evtl. in den Besitz dieser Datei kommt, sofortigen Zugriff auf alle zugehörigen Systeme erhält.
== Syntax ==
$ ssh [OPTIONEN] ZIEL [Befehl]


:Nun muss noch der öffentliche Schlüssel, zu erkennen an der Endung .pub (id_rsa.pub), auf dem Zielsystem deponiert werden. Dazu dient das Programm ssh-copy-id. Zu diesem Zeitpunkt muss die Authentifizierung per Passwort noch erlaubt sein (PasswordAuthentication yes):
$ ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B Anbindeschnittstelle] [-b Anbindeadresse] [-c Chiffrespez] [-D [Anbindeadresse:]Port] [-E Protokolldatei] [-e  Maskierzeichen] [-F Konfigurationsdatei] [-I PKCS11] [-i Identitätsdatei] [-J Ziel] [-L Adresse] [-l Anmeldename] [-m MAC_Spez] [-O Steuerbefehl] [-o Option] [-p Port] [-Q Abfrageoption] [-R Adresse] [-S Steuerpfad] [-W Rechner:Port] [-w lokaler_Tun[:ferner_Tun]] Ziel [Befehl [Argument …]]


ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
=== Optionen ===
{| class="wikitable sortable options"
|-
! Option !! Beschreibung
|-
| -4 || Erzwingt, dass ssh nur IPv4-Adressen verwendet.
|-
| -6 || Erzwingt, dass ssh nur IPv6-Adressen verwendet.  
|-
| -A || Aktiviert die Weiterleitung von Verbindungen von Authentifizierungsvermittlern wie ssh-agent(1).
* Dies kann in einer Konfigurationsdatei auch pro-Rechner separat festgelegt werden.
* Vermittlerweiterleitung sollte mit Vorsicht aktiviert werden.
* Benutzer, die auf dem fernen Rechner die Dateiberechtigungen umgehen können (für den UNIX-domain -Socket des Vermittlers), können auf den lokalen Vermittler über die weitergeleitete Verbindung zugreifen.
* Ein Angreifer kann vom Vermittler kein Schlüsselmaterial erlangen, allerdings kann er Aktionen unter den Schlüsseln ausführen, die es ihm ermöglichen, sich unter den im Vermittler geladenen Identitäten zu authentifizieren.
* Eine sichere Alternative könnte die Verwendung eines Sprungrechners sein (siehe -J).
|-
| -a || Deaktiviert die Weiterleitung der Authentifizierungsverbindung des Vermittlers.
|-
| -B Anbindeschnittstelle || Bindet an die Adresse aus Anbindeschnittstelle an, bevor versucht wird, sich mit dem Zielrechner zu verbinden.
* Dies ist nur auf Systemen mit mehr als einer Adresse nützlich.
|-
| -b Anbindeadresse || Verwendet Anbindeadresse auf der lokalen Maschine als Quelladresse der Verbindung.
* Dies ist nur auf Systemen mit mehr als einer Adresse nützlich.
|-
| -C || Fordert die Komprimierung sämtlicher Daten (einschließlich Stdin, Stdout, Stderr und über X11, TCP und UNIX-domain -Verbindungen weitergeleitete Daten).
* Der Kompressionsalgorithmus ist der gleiche, den auch gzip(1) nutzt.
* Die Komprimierung eignet sich für Modemleitungen und andere langsame Anbindungen, wird die Verbindung aber in schnellen Netzwerken nur ausbremsen.
* Der Vorgabewert kann für jeden Rechner separat in den Konfigurationsdateien eingestellt werden; siehe die Option Compression.
|-
| -c Chiffrespez || Wählt die Chiffrespezifikation für die Kryptografie der Verbindung aus.
* Chiffrespez ist eine durch Kommata getrennte Liste von Chiffren, in der Reihenfolge der Bevorzugung.
* Siehe das Schlüsselwort Ciphers in ssh_config(5) für weitere Informationen.
|-
| -D [Anbindeadresse:]Port || Legt eine lokale, “dynamische”, anwendungsbezogene Port-Weiterleitung fest.
* Dazu wird ein Socket bereitgestellt, der auf Port auf der lokalen Seite auf Anfragen wartet und optional an die angegebene Anbindeadresse angebunden wird.
* Immer wenn eine Verbindung zu diesem Port aufgebaut wird, wird diese Verbindung über den sicheren Kanal weitergeleitet und das Anwendungsprotokoll wird dann verwandt, um zu bestimmen, wohin auf der fernen Maschine verbunden werden soll.
* Derzeit werden die SOCKS4- und SOCKS5-Protokolle unterstützt und ssh wird als SOCKS-Server auftreten.
* Nur root kann privilegierte Ports weiterleiten.
* Dynamische Portweiterleitungen können auch in der Konfigurationsdatei festgelegt werden.


:Anschließend kann man sich ohne Passwort anmelden:
IPv6-Adressen können durch Angabe der Adresse in eckigen Klammern festgelegt werden.
* Nur der Systemadministrator kann privilegierte Ports weiterleiten.
* Standardmäßig ist der lokale Port gemäß der Einstellung GatewayPorts angebunden.
* Allerdings kann eine explizite Anbindeadresse verwandt werden, um die Verbindung an die bestimmte Adresse anzubinden.
* Die Anbindeadresse “localhost” zeigt an, dass dieser Port, auf dem auf Anfragen gewartet werden soll, nur für die lokale Benutzung angebunden ist, während eine leere Adresse oder »*« anzeigt, dass der Port an allen Schnittstellen verfügbar sein soll.
|-
| -E Protokolldatei || Hängt Fehlersuchprotokolle an Protokolldatei statt an die Standardfehlerausgabe an.
|-
| -e Maskierzeichen || Setzt das Maskierzeichen für die Sitzung mit einem PTY (Vorgabe: ‘~’).
* Das Maskierzeichen wird nur am Anfang einer Zeile erkannt.
* Das Maskierzeichen, gefolgt von einem Punkt (‘.’), schließt die Verbindung; gefolgt von einem Strg-Z, suspendiert es die Verbindung und gefolgt von sich selbst, sendet es einmalig das Maskierzeichen.
* Durch Setzen des Zeichens auf “none” wird Maskierung deaktiviert und die Sitzung vollkommen transparent.
|-
| -F Konfigurationsdatei  || Legt eine alternative, benutzerbezogene Konfigurationsdatei fest.
* Falls eine Konfigurationsdatei auf der Befehlszeile angegeben ist, wird die systemweite Konfigurationsdatei (/etc/ssh/ssh_config) ignoriert.
* Die Vorgabe für die benutzerbezogene Konfigurationsdatei ist ~/.ssh/config.
* Wird sie auf “none” gesetzt, dann wird keine Konfigurationsdatei eingelesen.
|-
| -f || Fordert ssh auf, sich vor der Befehlsausführung in den Hintergrund zu schieben.
* Dies ist nützlich, falls ssh nach Passwörtern oder Passphrasen fragen wird, der Benutzer es aber im Hintergrund ausgeführt haben möchte.
* Dies impliziert -n.
* Die empfohlene Art, X11-Programme auf einem fernen Rechner zu starten, ist etwas der Art nach ssh -f host xterm.
* Falls die Konfigurationsoption ExitOnForwardFailure auf “yes” gesetzt ist, dann wird ein Client, der mit -f gestartet wurde, darauf warten, dass alle fernen Port-Weiterleitungen erfolgreich etabliert wurden, bevor er sich in den Hintergrund schiebt.
* Schauen Sie in die Beschreibung von ForkAfterAuthentication in ssh_config(5) für Details.
|-
| -G || Führt dazu, dass ssh nach der Auswertung der Blöcke Host und Match seine Konfiguration anzeigt und sich beendet.
|-
| -g || Erlaubt es fernen Rechnern, sich mit lokal weitergeleiteten Ports zu verbinden.
* Wird dies auf einer multiplexten Verbindung verwandt, dann muss
diese Option beim Master-Prozess eingesetzt werden.
|-
| -I PKCS11 || Gibt die dynamische PKCS#11-Bibliothek an, die ssh für die Kommunikation mit einem PKCS#11-Token verwenden soll, der Schlüssel für die Benutzerauthentifizierung bereitstellt.
|-
| -i Identitätsdatei || Wählt eine Datei, aus der die Identität (der private Schlüssel) für asymmetrische Authentifizierung gelesen wird.
* Sie können auch festlegen, dass eine öffentliche Schlüsseldatei den entsprechenden privaten Schlüssel verwendet, der in ssh-agent(1) geladen wird, wenn die private Schlüsseldatei nicht lokal verfügbar ist.
* Die Vorgabe ist ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk und ~/.ssh/id_dsa.
* Identitätsdateien können auch auf einer rechnerbezogenen Basis in der Konfigurationsdatei festgelegt werden.
* Es ist auch möglich, mehrere Optionen -i (und mehrere in Konfigurationsdateien festgelegte Identitäten) einzusetzen.
* Falls keine Zertifikate explizit durch die Direktive CertificateFile angegeben sind, wird ssh versuchen, die Zertifikatsinformationen aus dem Dateinamen zu laden, der durch Anhängen von -cert.pub an die Identitätsdateinamen ermittelt wird.
|-
| -J Ziel || Verbindet sich zum Zielrechner, indem ssh zuerst eine Verbindung zu dem in Ziel angegebenen Sprungrechner aufbaut und dann dort eine TCP-Weiterleitung zum endgültigen Ziel etabliert.
* Mehrere Sprungrechner können durch Kommata getrennt angegeben werden.
* Dies ist eine Abkürzung für die Verwendung der Konfigurationsdirektive ProxyJump.
* Beachten Sie, dass auf der Befehlszeile übergebene Konfigurationsdirektiven sich im Allgemeinen auf den Zielrechner und nicht den angegebenen Sprungrechner beziehen.
* Verwenden Sie ~/.ssh/config, um Konfiguration für den Sprungrechner anzugeben.
|-
| -K || Aktiviert GSSAPI-basierte Authentifizierung und Weiterleitung (Delegierung) von GSSAPI-Anmeldedaten an den Server.
|-
| -k || Deaktiviert Weiterleitung (Delegierung) von GSSAPI-Anmeldedaten an den Server.
|-
| -L [Anbindeadresse:]Port:Rechner:Rechnerport
-L [Anbindeadresse:]Port:fernes_Socket,


ssh user@server
-L lokales_Socket:Rechner:Rechnerport


:Für den Fall, dass der Nutzername vom lokalen und entfernten Rechner gleich ist, genügt die Eingabe "ssh server"
-L lokales_Socket:Rechner
| Gibt an, dass Verbindungen zu dem angegebenen TCP-Port oder Unix-Socket auf dem lokalen (Client-)Rechner an den angegeben Rechner und Port oder Unix-Socket auf der fernen Seite weitergeleitet werden soll.
* Dies funktioniert durch Zuweisung eines Ports, der entweder auf einen TCP- Port auf der lokalen Seite, optional an die angegebene Anbindeadresse angebunden, oder auf einem Unix-Socket auf Anfragen wartet.
* Immer wenn eine Verbindung zu dem lokalen Port oder Socket erfolgt, wird die Verbindung über den sicheren Kanal weitergeleitet und es erfolgt entweder eine Verbindung zu dem Port des Rechners Rechnerport oder zum dem Unix-Socket fernes_Socket auf der fernen Maschine.
Port-Weiterleitung kann auch in der gesamten Konfigurationsdatei festgelegt werden.
* Nur der Systemadministrator kann privilegierte Ports weiterleiten.
* Durch Einschließen der Adresse in eckige Klammern können IPv6-Adressen angegeben werden.
Standardmäßig ist der lokale Port gemäß der Einstellung GatewayPorts angebunden.
* Allerdings kann eine explizite Anbindeadresse verwandt werden, um die Verbindung an eine bestimmte Adresse anzubinden.
* Wird “localhost” als Anbindeadresse verwandt, zeigt dies an, dass der Port, an dem auf Anfragen gewartet wird, nur lokal eingesetzt werden soll, während eine leere Adresse oder »*« anzeigt, dass der Port von allen Schnittstellen aus verfügbar sein soll.
|-
| -l Anmeldename ||Gibt den Benutzernamen an, unter dem die Anmeldung in der fernen Maschine erfolgen soll.
* Dies kann auch rechnerbezogen in der Konfigurationsdatei festgelegt werden.
|-
| -M || Bringt den ssh -Client in den “master” -Modus für die gemeinsame Benutzung von Verbindungen.
* Durch mehrere Optionen -M wird ssh in den “master” -Modus gebracht, es wird aber eine Bestätigung mit ssh-askpass(1) vor jeder Aktion verlangt, die den Multiplexing-Zustand ändert (z. B.  Öffnen einer neuen Sitzung).
* Lesen Sie die Beschreibung von ControlMaster in ssh_config(5) für Details.
|-
| -m MAC_Spez || Eine Kommata-getrennte Liste von MAC- (Nachrichtenauthentifizierungscodes-)Algorithmen, in der Reihenfolge der Präferenz angegeben.
* Siehe das Schlüsselwort MAC für weitere Informationen.
|-
| -N || Führt keinen Befehl in der Ferne aus.
* Dies ist nützlich, wenn nur Ports weitergeleitet werden.
* Schauen Sie in die Beschreibung von SessionType in ssh_config(5) für Details.
|-
| -n || Leitet Stdin nach /dev/null um (tätsächlich wird des Lesen von Stdin verhindert).
* Dies muss verwandt werden, wenn ssh im Hintergrund ausgeführt wird.
* Ein häufiger Trick ist, dies beim Einsatz von X11-Programmen auf einer fernen Maschine zu verwenden.
* Beispielsweise wird ssh -n shadows.cs.hut.fi emacs & einen Emacs auf shadows.cs.hut.fi starten und die X11-Verbindung wird automatisch über einen verschlüsselten Kanal weitergeleitet.
* Das Programm ssh wird in den Hintergrund geschoben. (Dies funktioniert nicht, falls ssh nach einem Passwort oder einer Passphrase fragen muss, siehe auch die Option -f.) Schauen Sie in die Beschreibung von StdinNull in ssh_config(5) für Details.
|-
| -O Steuerbefehl || Steuert einen aktiven Master-Prozess für Verbindungs-Multiplexing.
* Wird die Option -O angegeben, dann wird das Argument Steuerbefehl interpretiert und an den Master-Prozess übergeben.
* Gültige Befehle sind: “check” (prüfen, ob der Master-Prozess läuft), “forward” (Weiterleitungen ohne Befehlsausführung erbitten), “cancel” (Weiterleitungen abbrechen), “exit” (den Master zum Beenden auffordern) und “stop” (den Master bitten, keine weiteren Multiplexing-Anforderungen zu akzeptieren).
|-
| -o Option || Kann zur Angabe von Optionen, die wie in der Konfigurationsdatei formatiert sind, verwandt werden.
* Dies ist nützlich, um Optionen anzugeben, für die es keinen separaten Befehlszeilenschalter gibt.
* Für vollständige Details siehe ssh_config(5).
|-
| -p Port || Port, zu dem beim fernen Rechner verbunden werden soll.
* Dies kann rechnerbasiert in der Konfigurationsdatei festgelegt werden.
|-
| -Q Abfrageoption || Erfragt die Algorithmen, die von einem der folgenden Funktionalitäten unterstützt werden: cipher (unterstützte symmetrische Chiffren), cipher-auth (unterstützte symmetrische Chiffren, die authentifizierte Kryptografie unterstützen), help (die für den Einsatz mit dem Schalter -Q unterstützten Abfrageausdrücke), mac (unterstützte Nachrichtenintegritätscodes), kex (Schlüssel-Austauschalgorithmen), kex-gss (GSSAPI-Schlüssel-Austauschalgorithmen), key (Schlüsseltypen), key-cert (Zertifikatsschlüsseltypen), key-plain (nicht-Zertifikatsschlüsseltypen), key-sig (alle Schlüsseltypen und Signaturalgorithmen), Protokollversion (unterstützte SSH-Protokollversionen) und sig (unterstützte Signaturalgorithmen).
* Alternativ kann jedes Schlüsselwort aus ssh_config(5) und sshd_config(5), das eine Algorithmenliste akzeptiert, als ein Alias für die entsprechende Abfrageoption verwandt werden.
|-
| -q || Stiller Modus.
* Damit werden die meisten Warnungen und Diagnosemeldungen unterdrückt.
|-
| -R [Anbindeadresse:]Port:Rechner:Rechnerport
-R [Anbindeadresse:]Port:lokales_Socket


==Konfiguration des SSH-Servers (sshd)==
-R fernes_Socket:Rechner:Rechnerport


*Die Konfiguration des SSH-Servers sshd findet über die Datei /etc/ssh/sshd_config statt. Die Voreinstellungen sind aber durchweg akzeptabel.
-R fernes_Socket:lokales_Socket


*Es kann jedoch sinnvoll sein, PermitRootLogin auf no zu setzen. Dann kann sich niemand direkt als root einloggen, sondern man meldet sich unter seinem Benutzernamen an und ruft dann su oder sudo -s auf.
-R [Anbindeadresse:]Port
| Gibt an, dass Verbindungen zum dem angegebenen TCP-Port oder Unix-Socket auf dem fernen Rechner (Server) an die lokale Seite weitergeleitet werden sollen.
Dazu wird auf der fernen Seite ein Socket bereitgestellt, das entweder auf einem TCP- Port oder einem Unix-Socket auf Anfragen wartet.
* Immer wenn eine Verbindung zu diesem Port oder Unix-Socket aufgebaut wird, wird sie über den sicheren Kanal weitergeleitet und eine weitere Verbindung erstellt, die zu einem expliziten Ziel führt (angegeben durch den Port Rechnerport auf dem Rechner oder lokales_Socket).
* Falls kein Ziel genannt wurde, arbeitet ssh als SOCKS4/5-Proxy und leitet die Verbindungen zu den Zielen weiter, die vom entfernten SOCKS-Client erbeten werden.
Port-Weiterleitungen können auch in der Konfigurationsdatei festgelegt werden.
* Privilegierte Ports können nur nach Anmeldung als root auf der fernen Maschine weitergeleitet werden.
* Durch Einschluss der Adresse in eckige Klammern können IPv6-Adressen angegeben werden.
Standardmäßig werden TCP-Ports auf dem Server, an denen auf Anfragen gewartet wird, nur an die Loopback-Schnittstelle gebunden.
* Dies kann durch Angabe einer Anbindeadresse außer Kraft gesetzt werden.
* Eine leere Anbindeadresse oder die Adresse ‘*’ zeigt an, dass das ferne Socket auf allen Schnittstellen auf Anfragen warten soll.
* Die Angabe einer fernen Anbindeadresse wird nur erfolgreich sein, falls die Option GatewayPorts des Servers aktiviert ist (siehe sshd_config(5)).
Falls das Argument Port ‘0’ ist, dann wird der Port, an dem auf Anfragen gewartet wird, dynamisch auf dem Server zugewiesen und zur Laufzeit dem Client mitgeteilt.
* Wird dies zusammen mit -O forward eingesetzt, dann wird der zugewiesene Port auf die Standardausgabe geschrieben.
|-
| -S Steuerpfad || Gibt den Ort eines Steuer-Sockets für die gemeinsame Verwendung von Verbindungen oder die Zeichenkette “none” an, um die gemeinsame Verwendung von Verbindungen zu deaktivieren.
* Lesen Sie die Beschreibung von ControlPath und ControlMaster in ssh_config(5) für Details.
|-
| -s || Kann dazu verwandt werden, um das Starten eines Subsystems auf dem fernen System zu erbitten.
* Subsysteme ermöglichen die Verwendung von SSH als
sicheren Transport für andere Anwendungen (z. B. 
* sftp(1)).
* Das Subsystem wird als der ferne Befehl angegeben.
* Schauen Sie in die Beschreibung von SessionType in ssh_config(5) für Details.
|-
| -T || Deaktiviert Pseudo-Terminal-Zuweisung.
|-
| -t || Erzwingt Pseudo-Terminal-Zuweisung.
* Dies kann zur Ausführung mehrerer, auf Screen-basierter Programme auf fernen Maschinen verwandt werden.
Dies kann zur Implementierung von beispielsweise Menü-Diensten sehr nützlich sein.
* Mehrere Optionen -t erzwingen die TTY-Zuweisung, selbst wenn ssh kein lokales TTY hat.
|-
| -V || Zeigt die Versionnummer an und beendet sich.
|-
| -v || Ausführlicher Modus.
* Führt dazu, dass ssh Fehlersuchmeldungen über seinen Fortschritt ausgibt.
* Dies ist für die Fehlersuche bei Verbindungs-, Authentifizierungs- und Konfigurationsproblemen hilfreich.
* Mehrere Optionen -v erhöhen die Ausführlichkeit.
* Das Maximum ist 3.
|-
| -W Rechner:Port || Fordert, dass die Standardein- und -ausgabe auf dem Client an Rechner auf Port über den sicheren Kanal weitergeleitet wird.
* Impliziert -N, -T, ExitOnForwardFailure und ClearAllForwardings, allerdings können diese in der Konfigurationsdatei oder mittels der Befehlszeilenoptionen -o außer Kraft gesetzt werden.
|-
| -w lokaler_Tun[:ferner_Tun] || Fordert Tunnelgerät-Weiterleitung mit den angegebenen tun(4) -Geräten zwischen dem Client (lokaler_Tun) und dem Server (ferner_Tun).
Die Geräte können über numerische Kennungen oder das Schlüsselwort “any”, das das nächste verfügbare Tunnelgerät verwendet, angegeben werden.
Falls ferner_Tun nicht angegeben ist, ist die Vorgabe “any”.
* Siehe auch die Direktiven Tunnel und TunnelDevice in ssh_config(5).
Falls die Direktive Tunnel nicht gesetzt ist, wird sie auf den Standard-Tunnel-Modus ( “point-to-point”) gesetzt.
* Falls ein anderer Tunnel-Weiterleitungsmodus gewünscht ist, kann er vor -w angegeben werden.
|-
| -X || Aktiviert X11-Weiterleitung.
* Dies kann auch rechnerbezogen in der Konfigurationsdatei festgelegt werden.
X11-Weiterleitung sollte mit Vorsicht aktiviert werden.
* Benutzer, die auf dem fernen Rechner die Dateiberechtigungen umgehen können (für die X-Autorisierungs-Datenbank), können durch die weitergeleitete Verbindung auf das lokale X11-Display zugreifen.
* Ein Angreifer könnte dann in der Lage sein, Aktivitäten wie die Überwachung der Eingabe durchzuführen.
Aus diesem Grund unterliegt X11-Weiterleitung standardmäßig den X11-SECURITY-Erweiterungen.
* Lesen Sie für weitere Informationen die Beschreibung der Option ssh -Y und der Direktive ForwardX11Trusted in ssh_config(5).
(Debian-spezifisch: X11-Weiterleitung unterliegt derzeit standardmäßig nicht den Einschränkungen der X11-SECURITY-Erweiterungen, da derzeit zu viele Programme in diesem Modus abstürzen.
* Setzen Sie die Option ForwardX11Trusted auf “no”, um das von den Originalautoren beabsichtigte Verhalten wiederherzustellen.
* Dies kann sich abhängig von den Verbesserungen bei den Clients in der Zukunft ändern.)
|-
| -x || Deaktiviert X11-Weiterleitung.
|-
| -Y || Aktiviert vertrauenswürdige X11-Weiterleitung.
* Vertrauenswürdige X11-Weiterleitungen unterliegen nicht den Maßnahmen der X11-SECURITY-Erweiterungen. (Debian-spezifisch: In der Standardkonfiguration ist diese Option zu -X äquivalent, da wie oben beschrieben ForwardX11Trusted standardmäßig “yes” ist.
* Setzen Sie die Option ForwardX11Trusted auf “no”, um das von den Originalautoren beabsichtigte Verhalten wiederherzustellen.
* Dies kann sich abhängig von den Verbesserungen bei den Clients in der Zukunft ändern.)
|-
| -y || Sendet mittels des Systemmoduls syslog(3) Protokollinformationen.
* Standardmäßig werden diese Informationen auf die Stderr gesandt.
* ssh kann zusätzliche Konfigurationsdaten aus einer benutzerbezogenen Konfigurationsdatei und der systemweiten Konfigurationsdatei erhalten.
* Das Dateiformat und die Konfigurationsoptionen sind in ssh_config(5) beschrieben.
|}


*Mit den Direktiven AllowUsers und AllowGroups bzw. DenyUsers und DenyGroups lässt sich noch genauer festlegen, welche Benutzer sich anmelden dürfen und welche nicht. Dies empfiehlt sich besonders bei Servern. AllowGroups admin verbietet bspw. allen Benutzern, die keine Mitglieder der Gruppe admin sind, den Zugriff.
=== Parameter ===
; Ziel
* [Benutzer@]Rechnername
* ssh://[Benutzer@]Rechnername[:Port]


*Wer sich ausschließlich über das noch sicherere Public-Key-Verfahren anmelden will, der sollte die Benutzung von Passwörtern mit PasswordAuthentication no abschalten.
=== Umgebungsvariablen ===
=== Exit-Status ===


*Falls lange Wartezeiten bei der Anmeldung am SSH-Server auftreten, könnte das an einer fehlgeschlagenen Namensauflösung liegen. Da man SSH normalerweise sowieso über die IP benutzt, können diese DNS-Anfragen in der sshd_config deaktiviert werden. Der dafür nötige Eintrag wäre UseDNS no.
== Konfiguration ==
=== Dateien ===
== Sicherheit ==
== Dokumentation ==
=== RFC ===
=== Man-Pages ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt-Homepage ===
=== Weblinks ===


*Nach erfolgter Änderung der Datei sshd_config muss der Server mit dem Befehl:


sudo reload ssh
[[Kategorie:SSH]]
[[Kategorie:Linux/Befehl]]


==Dateitransfer==
{{DISPLAYTITLE:ssh}}
 
{{DEFAULTSORT:ssh}}
:Wenn man also ein Protokoll hat, das so sicher wie nach dem heutigen Stand der Technik möglich Daten durch einen verschlüsselten Kanal senden und empfangen kann, dann wäre es wohl Verschwendung, dieses Protokoll nur für interaktive Terminal-Sessions zu benutzen. Sehr häufig möchte man bspw. einfach nur Dateien sicher von einem System zum anderen bewegen.
[[Kategorie:Netzwerk/Befehl]]
:Dafür existieren verschiedene Programme der grafischen Benutzeroberfläche sowie gleich zwei Terminalbefehle nämlich scp und sftp.
 
*Secure Copy
 
:(abgekürzt SCP) ist ein Protokoll sowie ein Programm zur verschlüsselten Übertragung von Daten zwischen zwei Computern über ein Rechnernetz.
 
:Das Protokoll selbst implementiert nur die Dateiübertragung, für die Anmeldung und Verbindung wird SSH genutzt und auf dem entfernten Rechner ein SCP-Server aufgerufen; dieser ist normalerweise gleichzeitig auch das Client-Programm. Für das darunterliegende SSH wird ein SSH-Server benötigt.
 
scp user@pc:datei1 datei2 user@server2:
 
Beispiel an unseren PC's
 
scp user@fileserver:~/beispieldatei.odt user@meinpc:~/beispielordner/
 
:In diesem Beispiel wurde die datei1 aus dem Homeverzeichnis von benutzerx auf server1 und die datei2 aus dem aktuellen Verzeichnis des lokalen Hosts in das Homeverzeichnis von benutzery auf server2 kopiert.
 
 
um die versteckten Dateien zu kopieren, benutzt der Benutzer diese Option: .[!.]
scp -rp /Quelle-Pfad/.[!.]* user@host:/Ziel-Pfad/
 
 
*sftp
 
:Die andere Möglichkeit des Dateitransfers lautet sftp. Das funktioniert genau so wie der normale Kommandozeilen-FTP-Client:
 
:Das SSH File Transfer Protocol oder Secure File Transfer Protocol (SFTP) ist eine für die Secure Shell (SSH) entworfene Alternative zum File Transfer Protocol (FTP), die Verschlüsselung ermöglicht.
 
:Mit dem Befehl help bekommt man eine Übersicht über die möglichen Kommandos.
 
==Benutzeroberflächen==
 
:Wem es zu mühsam ist, auf der Kommandozeile die SSH-Verbindung zu einem Server aufzubauen, der sucht vielleicht ein grafisches Programm, um Verbindungsdaten zu verwalten.
 
*PuTTY - gibt es sowohl für Linux als auch für Windows. Das Programm ist in den offiziellen Paketquellen enthalten.
*PAC Manager  - (Perl Auto Connector) nicht in den offiziellen Paketquellen enthalten, aber über SourceForge wird ein Fremdpaket angeboten, das manuell installiert werden kann.
*Gnome-RDP  - mit diesem Programm kann man nicht nur RDP- und VNC-Verbindungen aufbauen, sondern auch SSH-Terminalsitzungen. Leider kann man in der aktuellen Version die Zugangspasswörter nicht speichern lassen und keine Angaben zum verwendeten Port machen. Es funktioniert somit nur mit Servern, die den Standard-SSH-Port 22 nutzen. In den offiziellen Paketquellen enthalten, benötigt aber Mono als Voraussetzung.
 
==Grafisches Dateimanagement==
 
 
KDE Plasma
----
 
 
*Zugriff per Dateimanager Dolphin
 
:Die meisten User möchten keine grafischen Programme auf dem entfernten Rechner ausführen, sondern oftmals Daten vom Laptop zum Heimrechner transferieren.
:KDE bringt dazu einen kio-slaves mit, der einen transparenten Zugriff aus allen KDE-Anwendungen zulässt.
:KDE-Input/Output-Slaves (kurz KIO-Slaves) sind Module, die ein asynchrones virtuelles Dateisystem darstellen.
:Im Dateimanager Dolphin oder Konqueror kann folgende URL in der Adresszeile verwendet werden
 
fish://<benutzer>@<rechner>/pfad
 
fish://user@server/home/user
 
:Daraufhin wird das Benutzerpasswort des Rechners abgefragt und man ist im Home-Verzeichnis des entfernten Rechners und kann nach belieben Daten von einem Rechner zum anderen verschieben und kopieren.
 
==Verschlüsselung==
 
:ssh verschlüsselt die gesamte Kommunikation zum sshd, inkl. der Anmeldung und aller Tunnels. Man kann dabei zwischen verschiedenen Verschlüsselungsalgorithmen wählen, z.B.
*3des gilt als besonders sicher, benötigt aber viel Rechenzeit
blowfish arbeitet besonders schnell
:Hier sind einige Möglichkeiten zur Auswahl des blowfish-Algorithmus im lokalen Netz, der die beteiligten Prozessoren entlastet und somit die Kommunikation beschleunigt:
*ssh -c blowfish ...
*ssh -o Cipher=blowfish...
:Eintrag Cipher blowfish für einige oder alle Hosts in der ~/.ssh/config oder /etc/ssh/ssh_config.
 
 
 
 
 
 
Quelle: https://de.wikipedia.org/
 
[[Category:Netzwerk]]
 
[[Benutzer:Meikschwalm|Meikschwalm]] ([[Benutzer Diskussion:Meikschwalm|Diskussion]]) 11:29, 21. Mai 2019 (CEST)

Aktuelle Version vom 16. Februar 2024, 11:06 Uhr

Der Befehl ssh startet einen Secure Shell-Client zur Anmeldung an einem SSH-Server

Beschreibung[Bearbeiten | Quelltext bearbeiten]

ssh verbindet sich mit dem angegebenen Ziel und meldet sich dort an
  • Es ist zur Bereitstellung sicherer, verschlüsselter Kommunikation zwischen zwei nicht vertrauenswürdigen Rechnern über ein unsicheres Netzwerk gedacht.
  • Der Benutzer muss seine/ihre Identitität auf der fernen Maschine mittels einer von mehreren, nachfolgend beschriebenen Methoden nachweisen.
X11-Verbindungen
  • beliebige TCP-Ports und UNIX-domain -Sockets können auch über den sicheren Kanal weitergeleitet werden.
Ausführung von Befehlen
  • Falls ein Befehl angegeben ist, wird er auf dem fernen Rechner statt in einer Anmelde-Shell ausgeführt.
  • Als Befehl kann eine komplette Befehlszeile angegeben werden oder er kann zusätzliche Argumente haben.
  • Falls angegeben, werden die Argumente an den Befehl, durch Leerzeichen getrennt, angehängt, bevor er an den Server zur Ausführung gesandt wird.

Installation[Bearbeiten | Quelltext bearbeiten]

Anwendung[Bearbeiten | Quelltext bearbeiten]

X-Umleitung[Bearbeiten | Quelltext bearbeiten]

siehe SSH/X-Forwarding

Passwort-Authentifizierung erzwingen[Bearbeiten | Quelltext bearbeiten]

  • Testen der Passwort-Authentifizierung
  • Die Authentifizierung mit öffentlichem Schlüssel wird hier abgeschaltet
ssh
$ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@host
scp
$ scp -o PreferredAuthentications=password -o PubkeyAuthentication=no DATEI user@host:DATEI

Syntax[Bearbeiten | Quelltext bearbeiten]

$ ssh [OPTIONEN] ZIEL [Befehl]
$ ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B Anbindeschnittstelle] [-b Anbindeadresse] [-c Chiffrespez] [-D [Anbindeadresse:]Port] [-E Protokolldatei] [-e  Maskierzeichen] [-F Konfigurationsdatei] [-I PKCS11] [-i Identitätsdatei] [-J Ziel] [-L Adresse] [-l Anmeldename] [-m MAC_Spez] [-O Steuerbefehl] [-o Option] [-p Port] [-Q Abfrageoption] [-R Adresse] [-S Steuerpfad] [-W Rechner:Port] [-w lokaler_Tun[:ferner_Tun]] Ziel [Befehl [Argument …]]

Optionen[Bearbeiten | Quelltext bearbeiten]

Option Beschreibung
-4 Erzwingt, dass ssh nur IPv4-Adressen verwendet.
-6 Erzwingt, dass ssh nur IPv6-Adressen verwendet.
-A Aktiviert die Weiterleitung von Verbindungen von Authentifizierungsvermittlern wie ssh-agent(1).
  • Dies kann in einer Konfigurationsdatei auch pro-Rechner separat festgelegt werden.
  • Vermittlerweiterleitung sollte mit Vorsicht aktiviert werden.
  • Benutzer, die auf dem fernen Rechner die Dateiberechtigungen umgehen können (für den UNIX-domain -Socket des Vermittlers), können auf den lokalen Vermittler über die weitergeleitete Verbindung zugreifen.
  • Ein Angreifer kann vom Vermittler kein Schlüsselmaterial erlangen, allerdings kann er Aktionen unter den Schlüsseln ausführen, die es ihm ermöglichen, sich unter den im Vermittler geladenen Identitäten zu authentifizieren.
  • Eine sichere Alternative könnte die Verwendung eines Sprungrechners sein (siehe -J).
-a Deaktiviert die Weiterleitung der Authentifizierungsverbindung des Vermittlers.
-B Anbindeschnittstelle Bindet an die Adresse aus Anbindeschnittstelle an, bevor versucht wird, sich mit dem Zielrechner zu verbinden.
  • Dies ist nur auf Systemen mit mehr als einer Adresse nützlich.
-b Anbindeadresse Verwendet Anbindeadresse auf der lokalen Maschine als Quelladresse der Verbindung.
  • Dies ist nur auf Systemen mit mehr als einer Adresse nützlich.
-C Fordert die Komprimierung sämtlicher Daten (einschließlich Stdin, Stdout, Stderr und über X11, TCP und UNIX-domain -Verbindungen weitergeleitete Daten).
  • Der Kompressionsalgorithmus ist der gleiche, den auch gzip(1) nutzt.
  • Die Komprimierung eignet sich für Modemleitungen und andere langsame Anbindungen, wird die Verbindung aber in schnellen Netzwerken nur ausbremsen.
  • Der Vorgabewert kann für jeden Rechner separat in den Konfigurationsdateien eingestellt werden; siehe die Option Compression.
-c Chiffrespez Wählt die Chiffrespezifikation für die Kryptografie der Verbindung aus.
  • Chiffrespez ist eine durch Kommata getrennte Liste von Chiffren, in der Reihenfolge der Bevorzugung.
  • Siehe das Schlüsselwort Ciphers in ssh_config(5) für weitere Informationen.
-D [Anbindeadresse:]Port Legt eine lokale, “dynamische”, anwendungsbezogene Port-Weiterleitung fest.
  • Dazu wird ein Socket bereitgestellt, der auf Port auf der lokalen Seite auf Anfragen wartet und optional an die angegebene Anbindeadresse angebunden wird.
  • Immer wenn eine Verbindung zu diesem Port aufgebaut wird, wird diese Verbindung über den sicheren Kanal weitergeleitet und das Anwendungsprotokoll wird dann verwandt, um zu bestimmen, wohin auf der fernen Maschine verbunden werden soll.
  • Derzeit werden die SOCKS4- und SOCKS5-Protokolle unterstützt und ssh wird als SOCKS-Server auftreten.
  • Nur root kann privilegierte Ports weiterleiten.
  • Dynamische Portweiterleitungen können auch in der Konfigurationsdatei festgelegt werden.

IPv6-Adressen können durch Angabe der Adresse in eckigen Klammern festgelegt werden.

  • Nur der Systemadministrator kann privilegierte Ports weiterleiten.
  • Standardmäßig ist der lokale Port gemäß der Einstellung GatewayPorts angebunden.
  • Allerdings kann eine explizite Anbindeadresse verwandt werden, um die Verbindung an die bestimmte Adresse anzubinden.
  • Die Anbindeadresse “localhost” zeigt an, dass dieser Port, auf dem auf Anfragen gewartet werden soll, nur für die lokale Benutzung angebunden ist, während eine leere Adresse oder »*« anzeigt, dass der Port an allen Schnittstellen verfügbar sein soll.
-E Protokolldatei Hängt Fehlersuchprotokolle an Protokolldatei statt an die Standardfehlerausgabe an.
-e Maskierzeichen Setzt das Maskierzeichen für die Sitzung mit einem PTY (Vorgabe: ‘~’).
  • Das Maskierzeichen wird nur am Anfang einer Zeile erkannt.
  • Das Maskierzeichen, gefolgt von einem Punkt (‘.’), schließt die Verbindung; gefolgt von einem Strg-Z, suspendiert es die Verbindung und gefolgt von sich selbst, sendet es einmalig das Maskierzeichen.
  • Durch Setzen des Zeichens auf “none” wird Maskierung deaktiviert und die Sitzung vollkommen transparent.
-F Konfigurationsdatei Legt eine alternative, benutzerbezogene Konfigurationsdatei fest.
  • Falls eine Konfigurationsdatei auf der Befehlszeile angegeben ist, wird die systemweite Konfigurationsdatei (/etc/ssh/ssh_config) ignoriert.
  • Die Vorgabe für die benutzerbezogene Konfigurationsdatei ist ~/.ssh/config.
  • Wird sie auf “none” gesetzt, dann wird keine Konfigurationsdatei eingelesen.
-f Fordert ssh auf, sich vor der Befehlsausführung in den Hintergrund zu schieben.
  • Dies ist nützlich, falls ssh nach Passwörtern oder Passphrasen fragen wird, der Benutzer es aber im Hintergrund ausgeführt haben möchte.
  • Dies impliziert -n.
  • Die empfohlene Art, X11-Programme auf einem fernen Rechner zu starten, ist etwas der Art nach ssh -f host xterm.
  • Falls die Konfigurationsoption ExitOnForwardFailure auf “yes” gesetzt ist, dann wird ein Client, der mit -f gestartet wurde, darauf warten, dass alle fernen Port-Weiterleitungen erfolgreich etabliert wurden, bevor er sich in den Hintergrund schiebt.
  • Schauen Sie in die Beschreibung von ForkAfterAuthentication in ssh_config(5) für Details.
-G Führt dazu, dass ssh nach der Auswertung der Blöcke Host und Match seine Konfiguration anzeigt und sich beendet.
-g Erlaubt es fernen Rechnern, sich mit lokal weitergeleiteten Ports zu verbinden.
  • Wird dies auf einer multiplexten Verbindung verwandt, dann muss

diese Option beim Master-Prozess eingesetzt werden.

-I PKCS11 Gibt die dynamische PKCS#11-Bibliothek an, die ssh für die Kommunikation mit einem PKCS#11-Token verwenden soll, der Schlüssel für die Benutzerauthentifizierung bereitstellt.
-i Identitätsdatei Wählt eine Datei, aus der die Identität (der private Schlüssel) für asymmetrische Authentifizierung gelesen wird.
  • Sie können auch festlegen, dass eine öffentliche Schlüsseldatei den entsprechenden privaten Schlüssel verwendet, der in ssh-agent(1) geladen wird, wenn die private Schlüsseldatei nicht lokal verfügbar ist.
  • Die Vorgabe ist ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk und ~/.ssh/id_dsa.
  • Identitätsdateien können auch auf einer rechnerbezogenen Basis in der Konfigurationsdatei festgelegt werden.
  • Es ist auch möglich, mehrere Optionen -i (und mehrere in Konfigurationsdateien festgelegte Identitäten) einzusetzen.
  • Falls keine Zertifikate explizit durch die Direktive CertificateFile angegeben sind, wird ssh versuchen, die Zertifikatsinformationen aus dem Dateinamen zu laden, der durch Anhängen von -cert.pub an die Identitätsdateinamen ermittelt wird.
-J Ziel Verbindet sich zum Zielrechner, indem ssh zuerst eine Verbindung zu dem in Ziel angegebenen Sprungrechner aufbaut und dann dort eine TCP-Weiterleitung zum endgültigen Ziel etabliert.
  • Mehrere Sprungrechner können durch Kommata getrennt angegeben werden.
  • Dies ist eine Abkürzung für die Verwendung der Konfigurationsdirektive ProxyJump.
  • Beachten Sie, dass auf der Befehlszeile übergebene Konfigurationsdirektiven sich im Allgemeinen auf den Zielrechner und nicht den angegebenen Sprungrechner beziehen.
  • Verwenden Sie ~/.ssh/config, um Konfiguration für den Sprungrechner anzugeben.
-K Aktiviert GSSAPI-basierte Authentifizierung und Weiterleitung (Delegierung) von GSSAPI-Anmeldedaten an den Server.
-k Deaktiviert Weiterleitung (Delegierung) von GSSAPI-Anmeldedaten an den Server.
-L [Anbindeadresse:]Port:Rechner:Rechnerport

-L [Anbindeadresse:]Port:fernes_Socket,

-L lokales_Socket:Rechner:Rechnerport

-L lokales_Socket:Rechner

Gibt an, dass Verbindungen zu dem angegebenen TCP-Port oder Unix-Socket auf dem lokalen (Client-)Rechner an den angegeben Rechner und Port oder Unix-Socket auf der fernen Seite weitergeleitet werden soll.
  • Dies funktioniert durch Zuweisung eines Ports, der entweder auf einen TCP- Port auf der lokalen Seite, optional an die angegebene Anbindeadresse angebunden, oder auf einem Unix-Socket auf Anfragen wartet.
  • Immer wenn eine Verbindung zu dem lokalen Port oder Socket erfolgt, wird die Verbindung über den sicheren Kanal weitergeleitet und es erfolgt entweder eine Verbindung zu dem Port des Rechners Rechnerport oder zum dem Unix-Socket fernes_Socket auf der fernen Maschine.

Port-Weiterleitung kann auch in der gesamten Konfigurationsdatei festgelegt werden.

  • Nur der Systemadministrator kann privilegierte Ports weiterleiten.
  • Durch Einschließen der Adresse in eckige Klammern können IPv6-Adressen angegeben werden.

Standardmäßig ist der lokale Port gemäß der Einstellung GatewayPorts angebunden.

  • Allerdings kann eine explizite Anbindeadresse verwandt werden, um die Verbindung an eine bestimmte Adresse anzubinden.
  • Wird “localhost” als Anbindeadresse verwandt, zeigt dies an, dass der Port, an dem auf Anfragen gewartet wird, nur lokal eingesetzt werden soll, während eine leere Adresse oder »*« anzeigt, dass der Port von allen Schnittstellen aus verfügbar sein soll.
-l Anmeldename Gibt den Benutzernamen an, unter dem die Anmeldung in der fernen Maschine erfolgen soll.
  • Dies kann auch rechnerbezogen in der Konfigurationsdatei festgelegt werden.
-M Bringt den ssh -Client in den “master” -Modus für die gemeinsame Benutzung von Verbindungen.
  • Durch mehrere Optionen -M wird ssh in den “master” -Modus gebracht, es wird aber eine Bestätigung mit ssh-askpass(1) vor jeder Aktion verlangt, die den Multiplexing-Zustand ändert (z. B.  Öffnen einer neuen Sitzung).
  • Lesen Sie die Beschreibung von ControlMaster in ssh_config(5) für Details.
-m MAC_Spez Eine Kommata-getrennte Liste von MAC- (Nachrichtenauthentifizierungscodes-)Algorithmen, in der Reihenfolge der Präferenz angegeben.
  • Siehe das Schlüsselwort MAC für weitere Informationen.
-N Führt keinen Befehl in der Ferne aus.
  • Dies ist nützlich, wenn nur Ports weitergeleitet werden.
  • Schauen Sie in die Beschreibung von SessionType in ssh_config(5) für Details.
-n Leitet Stdin nach /dev/null um (tätsächlich wird des Lesen von Stdin verhindert).
  • Dies muss verwandt werden, wenn ssh im Hintergrund ausgeführt wird.
  • Ein häufiger Trick ist, dies beim Einsatz von X11-Programmen auf einer fernen Maschine zu verwenden.
  • Beispielsweise wird ssh -n shadows.cs.hut.fi emacs & einen Emacs auf shadows.cs.hut.fi starten und die X11-Verbindung wird automatisch über einen verschlüsselten Kanal weitergeleitet.
  • Das Programm ssh wird in den Hintergrund geschoben. (Dies funktioniert nicht, falls ssh nach einem Passwort oder einer Passphrase fragen muss, siehe auch die Option -f.) Schauen Sie in die Beschreibung von StdinNull in ssh_config(5) für Details.
-O Steuerbefehl Steuert einen aktiven Master-Prozess für Verbindungs-Multiplexing.
  • Wird die Option -O angegeben, dann wird das Argument Steuerbefehl interpretiert und an den Master-Prozess übergeben.
  • Gültige Befehle sind: “check” (prüfen, ob der Master-Prozess läuft), “forward” (Weiterleitungen ohne Befehlsausführung erbitten), “cancel” (Weiterleitungen abbrechen), “exit” (den Master zum Beenden auffordern) und “stop” (den Master bitten, keine weiteren Multiplexing-Anforderungen zu akzeptieren).
-o Option Kann zur Angabe von Optionen, die wie in der Konfigurationsdatei formatiert sind, verwandt werden.
  • Dies ist nützlich, um Optionen anzugeben, für die es keinen separaten Befehlszeilenschalter gibt.
  • Für vollständige Details siehe ssh_config(5).
-p Port Port, zu dem beim fernen Rechner verbunden werden soll.
  • Dies kann rechnerbasiert in der Konfigurationsdatei festgelegt werden.
-Q Abfrageoption Erfragt die Algorithmen, die von einem der folgenden Funktionalitäten unterstützt werden: cipher (unterstützte symmetrische Chiffren), cipher-auth (unterstützte symmetrische Chiffren, die authentifizierte Kryptografie unterstützen), help (die für den Einsatz mit dem Schalter -Q unterstützten Abfrageausdrücke), mac (unterstützte Nachrichtenintegritätscodes), kex (Schlüssel-Austauschalgorithmen), kex-gss (GSSAPI-Schlüssel-Austauschalgorithmen), key (Schlüsseltypen), key-cert (Zertifikatsschlüsseltypen), key-plain (nicht-Zertifikatsschlüsseltypen), key-sig (alle Schlüsseltypen und Signaturalgorithmen), Protokollversion (unterstützte SSH-Protokollversionen) und sig (unterstützte Signaturalgorithmen).
  • Alternativ kann jedes Schlüsselwort aus ssh_config(5) und sshd_config(5), das eine Algorithmenliste akzeptiert, als ein Alias für die entsprechende Abfrageoption verwandt werden.
-q Stiller Modus.
  • Damit werden die meisten Warnungen und Diagnosemeldungen unterdrückt.
-R [Anbindeadresse:]Port:Rechner:Rechnerport

-R [Anbindeadresse:]Port:lokales_Socket

-R fernes_Socket:Rechner:Rechnerport

-R fernes_Socket:lokales_Socket

-R [Anbindeadresse:]Port

Gibt an, dass Verbindungen zum dem angegebenen TCP-Port oder Unix-Socket auf dem fernen Rechner (Server) an die lokale Seite weitergeleitet werden sollen.

Dazu wird auf der fernen Seite ein Socket bereitgestellt, das entweder auf einem TCP- Port oder einem Unix-Socket auf Anfragen wartet.

  • Immer wenn eine Verbindung zu diesem Port oder Unix-Socket aufgebaut wird, wird sie über den sicheren Kanal weitergeleitet und eine weitere Verbindung erstellt, die zu einem expliziten Ziel führt (angegeben durch den Port Rechnerport auf dem Rechner oder lokales_Socket).
  • Falls kein Ziel genannt wurde, arbeitet ssh als SOCKS4/5-Proxy und leitet die Verbindungen zu den Zielen weiter, die vom entfernten SOCKS-Client erbeten werden.

Port-Weiterleitungen können auch in der Konfigurationsdatei festgelegt werden.

  • Privilegierte Ports können nur nach Anmeldung als root auf der fernen Maschine weitergeleitet werden.
  • Durch Einschluss der Adresse in eckige Klammern können IPv6-Adressen angegeben werden.

Standardmäßig werden TCP-Ports auf dem Server, an denen auf Anfragen gewartet wird, nur an die Loopback-Schnittstelle gebunden.

  • Dies kann durch Angabe einer Anbindeadresse außer Kraft gesetzt werden.
  • Eine leere Anbindeadresse oder die Adresse ‘*’ zeigt an, dass das ferne Socket auf allen Schnittstellen auf Anfragen warten soll.
  • Die Angabe einer fernen Anbindeadresse wird nur erfolgreich sein, falls die Option GatewayPorts des Servers aktiviert ist (siehe sshd_config(5)).

Falls das Argument Port ‘0’ ist, dann wird der Port, an dem auf Anfragen gewartet wird, dynamisch auf dem Server zugewiesen und zur Laufzeit dem Client mitgeteilt.

  • Wird dies zusammen mit -O forward eingesetzt, dann wird der zugewiesene Port auf die Standardausgabe geschrieben.
-S Steuerpfad Gibt den Ort eines Steuer-Sockets für die gemeinsame Verwendung von Verbindungen oder die Zeichenkette “none” an, um die gemeinsame Verwendung von Verbindungen zu deaktivieren.
  • Lesen Sie die Beschreibung von ControlPath und ControlMaster in ssh_config(5) für Details.
-s Kann dazu verwandt werden, um das Starten eines Subsystems auf dem fernen System zu erbitten.
  • Subsysteme ermöglichen die Verwendung von SSH als

sicheren Transport für andere Anwendungen (z. B. 

  • sftp(1)).
  • Das Subsystem wird als der ferne Befehl angegeben.
  • Schauen Sie in die Beschreibung von SessionType in ssh_config(5) für Details.
-T Deaktiviert Pseudo-Terminal-Zuweisung.
-t Erzwingt Pseudo-Terminal-Zuweisung.
  • Dies kann zur Ausführung mehrerer, auf Screen-basierter Programme auf fernen Maschinen verwandt werden.

Dies kann zur Implementierung von beispielsweise Menü-Diensten sehr nützlich sein.

  • Mehrere Optionen -t erzwingen die TTY-Zuweisung, selbst wenn ssh kein lokales TTY hat.
-V Zeigt die Versionnummer an und beendet sich.
-v Ausführlicher Modus.
  • Führt dazu, dass ssh Fehlersuchmeldungen über seinen Fortschritt ausgibt.
  • Dies ist für die Fehlersuche bei Verbindungs-, Authentifizierungs- und Konfigurationsproblemen hilfreich.
  • Mehrere Optionen -v erhöhen die Ausführlichkeit.
  • Das Maximum ist 3.
-W Rechner:Port Fordert, dass die Standardein- und -ausgabe auf dem Client an Rechner auf Port über den sicheren Kanal weitergeleitet wird.
  • Impliziert -N, -T, ExitOnForwardFailure und ClearAllForwardings, allerdings können diese in der Konfigurationsdatei oder mittels der Befehlszeilenoptionen -o außer Kraft gesetzt werden.
-w lokaler_Tun[:ferner_Tun] Fordert Tunnelgerät-Weiterleitung mit den angegebenen tun(4) -Geräten zwischen dem Client (lokaler_Tun) und dem Server (ferner_Tun).

Die Geräte können über numerische Kennungen oder das Schlüsselwort “any”, das das nächste verfügbare Tunnelgerät verwendet, angegeben werden. Falls ferner_Tun nicht angegeben ist, ist die Vorgabe “any”.

  • Siehe auch die Direktiven Tunnel und TunnelDevice in ssh_config(5).

Falls die Direktive Tunnel nicht gesetzt ist, wird sie auf den Standard-Tunnel-Modus ( “point-to-point”) gesetzt.

  • Falls ein anderer Tunnel-Weiterleitungsmodus gewünscht ist, kann er vor -w angegeben werden.
-X Aktiviert X11-Weiterleitung.
  • Dies kann auch rechnerbezogen in der Konfigurationsdatei festgelegt werden.

X11-Weiterleitung sollte mit Vorsicht aktiviert werden.

  • Benutzer, die auf dem fernen Rechner die Dateiberechtigungen umgehen können (für die X-Autorisierungs-Datenbank), können durch die weitergeleitete Verbindung auf das lokale X11-Display zugreifen.
  • Ein Angreifer könnte dann in der Lage sein, Aktivitäten wie die Überwachung der Eingabe durchzuführen.

Aus diesem Grund unterliegt X11-Weiterleitung standardmäßig den X11-SECURITY-Erweiterungen.

  • Lesen Sie für weitere Informationen die Beschreibung der Option ssh -Y und der Direktive ForwardX11Trusted in ssh_config(5).

(Debian-spezifisch: X11-Weiterleitung unterliegt derzeit standardmäßig nicht den Einschränkungen der X11-SECURITY-Erweiterungen, da derzeit zu viele Programme in diesem Modus abstürzen.

  • Setzen Sie die Option ForwardX11Trusted auf “no”, um das von den Originalautoren beabsichtigte Verhalten wiederherzustellen.
  • Dies kann sich abhängig von den Verbesserungen bei den Clients in der Zukunft ändern.)
-x Deaktiviert X11-Weiterleitung.
-Y Aktiviert vertrauenswürdige X11-Weiterleitung.
  • Vertrauenswürdige X11-Weiterleitungen unterliegen nicht den Maßnahmen der X11-SECURITY-Erweiterungen. (Debian-spezifisch: In der Standardkonfiguration ist diese Option zu -X äquivalent, da wie oben beschrieben ForwardX11Trusted standardmäßig “yes” ist.
  • Setzen Sie die Option ForwardX11Trusted auf “no”, um das von den Originalautoren beabsichtigte Verhalten wiederherzustellen.
  • Dies kann sich abhängig von den Verbesserungen bei den Clients in der Zukunft ändern.)
-y Sendet mittels des Systemmoduls syslog(3) Protokollinformationen.
  • Standardmäßig werden diese Informationen auf die Stderr gesandt.
  • ssh kann zusätzliche Konfigurationsdaten aus einer benutzerbezogenen Konfigurationsdatei und der systemweiten Konfigurationsdatei erhalten.
  • Das Dateiformat und die Konfigurationsoptionen sind in ssh_config(5) beschrieben.

Parameter[Bearbeiten | Quelltext bearbeiten]

Ziel
  • [Benutzer@]Rechnername
  • ssh://[Benutzer@]Rechnername[:Port]

Umgebungsvariablen[Bearbeiten | Quelltext bearbeiten]

Exit-Status[Bearbeiten | Quelltext bearbeiten]

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Dateien[Bearbeiten | Quelltext bearbeiten]

Sicherheit[Bearbeiten | Quelltext bearbeiten]

Dokumentation[Bearbeiten | Quelltext bearbeiten]

RFC[Bearbeiten | Quelltext bearbeiten]

Man-Pages[Bearbeiten | Quelltext bearbeiten]

Info-Pages[Bearbeiten | Quelltext bearbeiten]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Links[Bearbeiten | Quelltext bearbeiten]

Projekt-Homepage[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]