SSH

Zuletzt geändert von Martin Uhl am 2026/06/29 16:00

SSH Zugriff

0. Fingerprints

Ein Schlüsselfingerprint bei SSH ist ein Hash des Public Keys des Hosts und dient der Verifikation und Identifikation des Servers. Damit kann zum Beispiel überprüft werden, ob sich ein Host ändert (z.B. wenn der DNS-Server gehackt wurde und lxhalle.in.tum.de plötzlich auf einen bösen Server verweist).

Die ECDSA-Keys wurden aus Sicherheitsgründen deaktiviert.

halle.cit.tum.de

In der folgenden Tabelle sind die Fingerprints für halle.cit.tum.de aufgeführt.

 lxhalle MD5-Fingerprint SHA256-Fingerprint
 Ed25519  MD5:f8:73:a4:f9:47:8e:a2:ba:11:59:19:35:bf:d6:c7:c4  SHA256:dSj0mkyuOXEdpKGGJmXkvhDnvbjGmGCYQXA0pV8Pe4s 
 RSA  MD5:4b:84:7e:c4:cf:b7:ff:fb:eb:d0:0c:7b:c3:97:05:54  SHA256:xJrFkhNs9pwibJFZZB5LvcrltWxfAIovk/UjKAXkIW4

Diese Fingerprints wurden zuletzt am 04.04.2019 verifiziert.

ssh.math.cit.tum.de

In der folgenden Tabelle sind die Fingerprints für ssh.math.cit.tum.de aufgelistet. (Server ssh.ma.tum.de ist mit denselbern Fingerprints auch noch verfügbar.)

 ssh.ma.tum.de MD5-Fingerprint SHA256-Fingerprint
 Ed25519  MD5:70:5d:b8:5f:51:69:60:07:22:a4:45:65:7b:c5:99:b9  SHA256:EbNhVTkW+74PX0tQNb9bai0HXAVcQLC9lOeS+BgatPM 
 RSA  MD5:f0:07:65:2b:45:83:19:15:d9:fa:96:e4:5e:bc:8c:43  SHA256:4J5P9HV9KrmMS6aKWYukNjVpaSFBrea2iQvXZOCQ7sQ 

1. OpenSSH

SSH (Secure Shell) ist ein Tool für die sichere Systemverwaltung, Dateiübertragung und andere Kommunikation über das Internet oder andere nicht vertrauenswürdige Netzwerke. Es verschlüsselt Identitäten, Passwörter und übertragene Daten, damit sie nicht abgehört oder gestohlen werden können. OpenSSH ist eine Open-Source-Implementierung des SSH-Protokolls.

OpenSSH liefert folgende Tools mit:

  • SSH (Secure Shell Client, Login auf einem Remote-System, Aufbau von Tunnel)
  • SCP (Secure Copy Protocol, cp über einen SSH-Tunnel)
  • SFTP (Secure File Transfer Protocol, ftp über einen SSH-Tunnel)
  • ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen und ssh-agent (Keymanagement)
  • sshd (SSH Server)
  • sftp-server (SFTP Server)

Auf Linux und macOS ist OpenSSH in der Regel vorinstalliert und es existiert auch eine Implementierung für Windows, die auf Windows 10 seit dem “Windows 10 Fall Creators Update“ mitgeliefert wird.

Unter Programme und Features lässt es sich seitdem aktivieren und seit etwa April 2018 sollte es standardmäßig aktiviert sein, wenn man auf dem aktuellsten Updatestand ist.

1.1. SSH-Verbindung mit Passwort

Öffnen Sie das Terminal (macOS/Linux) oder die PowerShell (Windows). In diesem kann man nun eine SSH-Verbindung aufbauen.

$> ssh CIT-username@hostname

Also in unserem Fall z.B.

$> ssh musterma@lxhalle.cit.tum.de oder $> ssh musterma@ssh.ma.tum.de

Falls der Server unbekannt ist, also die Verbindung zum ersten Mal aufgebaut wird oder die known_hosts Datei gelöscht wurde, ist eine Bestätigung des Fingerprints des public key des Servers gefragt.

> The authenticity of host ‘<i>server (serverip)</i>’ can’t be established.
> ECDSA key fingerprint is <i>server fingerprint</i>
> Are you sure you want to continue connecting (yes/no)?

Falls der Fingerprint korrekt ist, kann die Abfrage bestätigt werden. Nun wird man noch nach seinem Passwort gefragt, und man sollte auf dem Server eingeloggt sein.

1.2. SSH-Verbindung ohne Passwort (OpenSSH-Konfiguration)

Mit den OpenSSH-Konfigurationsdateien lassen sich unter anderem Aliase für SSH-Hosts anlegen und Optionen festlegen. Mehr Informationen unter https://www.ssh.com/ssh/config/

Falls die OpenSSH-Konfigurationsdatei noch nicht vorhanden ist, kann man sie einfach mit touch ~/.ssh/config

erstellen. Danach öffnet man die Konfigurationsdatei (config) im Terminal mit einem Texteditor, z.B. vi oder vim.

vim ~/.ssh/config

Ein Beispiel-Hosteintrag sieht wie folgt aus:

1677665498294-467.png

Um eine SSH-Verbindung ohne Passwort zur Lxhalle auszubauen, braucht man eine Konfigurationsdatei wie unten

1677665518714-502.png

1.3. SSH Key

1.3.1. Schlüsselpaar generieren (private und Public)

Zum Generieren eines SSH-Keys den folgenden Befehl ausführen.

ssh-keygen -t rsa -b 4096 

– b steht für die Anzahl der Bits, mit denen die Länge des Schlüssels bestimmt werden kann. 

– t steht für den Schlüsseltyp.

Wenn Sie das angeben, werden Sie nach einem Pfad nachgefragt, in dem das generierte Key hinterlegt werden soll.

$> ssh-keygen -t rsa -b 4096
> Generating public/private rsa key pair.
> Enter file in which to save the key (/home/"$USER"/.ssh/id_rsa): <path_to_directory_to_store_key>
> Enter passphrase (empty for no passphrase):
> Enter same passphrase again:
> Your identification has been saved in <path>
> Your public key has been saved in <path>
> The key fingerprint is:
> SHA256:LtcxHv0vIgzbV/udUgBLQQ8ayBl10DzwLP0LtUC97mQ <username>@<hostname>
> The key's randomart image is:
> +---[RSA 2048]----+
> | ..==**o |
> | + O*o. |
> | o.=+o. |
> | .o+o. |
> | S +.oo. |
> | ..o +.Eo. |
> | . o=o +oo. |
> | o. + ooo.o|
> | o ..++|
> +----[SHA256]-----+

1.3.2. Öffentlichen Schlüssel auf Server übertragen

Der öffentliche Schlüssel muss auf den Server übertragen werden.I.d.R. kann man dies einfach über ssh-copy-id erledigen.

$> ssh-copy-id CIT-username@hostname
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: <path_to_directory_where_key_is_stored>
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@hostname password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'username@hostname'"
and check to make sure that only the key(s) you wanted were added.

Jetzt sollte der Key auf dem Server als autorisierter Key installiert sein und ein Login mit

ssh -i PfadZumKeyfile username@hostname

möglich sein. Alternativ kann man das Identityfile wie oben spezifiziert in der SSH-Konfiguration angeben und sich mit SSH-Alias verbinden.

1.3.3. SSH-Keygen Manpages

Wenn man folgenden Befehl im Terminal ausführt, erfährt man mehr über SSH-Keygen

$> ssh-keygen man

usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
                  [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
                  [-N new_passphrase] [-O option] [-w provider]
       ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
                   [-P old_passphrase]
       ssh-keygen -i [-f input_keyfile] [-m key_format]
       ssh-keygen -e [-f input_keyfile] [-m key_format]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-lv] [-f known_hosts_file]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -K [-w provider]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-g] [-f input_keyfile]
       ssh-keygen -M generate [-O option] output_file
       ssh-keygen -M screen [-f input_file] [-O option] output_file
       ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
                  [-n principals] [-O option] [-V validity_interval]
                  [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A [-f prefix_path]
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...
       ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
       ssh-keygen -Y check-novalidate -n namespace -s signature_file
       ssh-keygen -Y sign -f key_file -n namespace file ...
       ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
             -n namespace -s signature_file [-r revocation_file]

1.4. Filetransfer mit SFTP

Das Secure File Transfer Protocol (SFTP) kann genutzt werden, um Daten zu oder von einem Remote-System zu übertragen.

$> sftp                                                                                                                                                                           
usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
          [-D sftp_server_path] [-F ssh_config] [-i identity_file]
          [-J destination] [-l limit] [-o ssh_option] [-P port]
          [-R num_requests] [-S program] [-s subsystem | sftp_server]
          destination

Dazu kann man einfach das mit der OpenSSH-Implementierung mitgelieferte SFTP-Tool verwenden. Dazu einfach in das Terminal oder PowerShell „sftp“ eingeben. Die Parameter sind analog zum SSH-Befehl, nur dass manche Flags fehlen, wie z. B. B. X11-Forwarding. Man kann auch die in der SSH-Config definierten Hosts nutzen.

z.B. also:

 $> sftp CIT-username@lxhalle.in.tum.de 

Hier kann man nun interaktive Befehle nutzen, um zu den gewünschten Dateien/Orten im Dateisystem zu navigieren (z.B.: ls, cd). Hier kann man nun mit get/put Dateien bzw. Ordner (das Flag -r angeben, damit der Ordner rekursiv übertragen wird) herunter- bzw. hochladen.

Weitere Informationen zum SFTP-Tool der OpenSSH-Implementierung finden sich im Manual.


1.5. X11 Forwarding

Unter den meisten Linux-Systemen dient X.org der Darstellung einer grafischen Oberfläche. Die aktuelle Version ist X Version 11, kurz X11. Mit X11 Forwarding kann man nun auf einem Remote-System eine Anwendung starten und die grafische Ausgabe an einen lokalen X11-Server übertragen.

Um X11 Forwarding nutzen zu können, muss man nur beim ssh-Befehl das X11-Forwarding-Flag setzen (also einfach ein -X hinzufügen). Alternativ kann man X11 Forwarding auch in der SSH-Config aktivieren.

Auf den meisten Linuxsystemen mit grafischer Oberfläche sollte ein X11-Server von Werk aus mitgeliefert sein, sonst muss man diesen aus den Paketquellen nachinstallieren(z. B. pacman -S xorg oder apt install xorg).

Unter Mac OS X 10.5 benötigt man zusätzliche Bibliotheken. Näheres dazu auf der Apple-Seite: Informationen zu X11 für Mac.

Unter Windows benötigt man ebenfalls einen X11-Server. Dazu bietet es sich unter Windows 10 an, das Linux-Subsystem für Windows zu nutzen.(Einrichtung siehe weiter unten im Text). In diesem Linux funktioniert es nun wie unter nativem Linux. Einfach das entsprechende xorg-Paket installieren und den xorg-Server starten.

2. Remote Desktop

Screenshot (28)ed.png

Als computer lxhalle.in.tum.de eingeben und connect klicken.

Screenshot (29)ed.png

Yes klicken.

30ed.png

CIT-Kennung und Passwort eingeben, OK klicken.

Screenshot (31)ed.png

3. Linux Subsystem für Windows 10

Auf Windows 10 kann man auch ein Linux-Subsystem installieren, das sich in den Windows-Kernel und das Windows-Dateisystem integriert. Es ist ein vollständiges Linux, das allerdings im Windows-Kernel läuft.

3.1. Installation

Mit Windows-Logo-Taste + X oder Rechtsklick auf die Windows-Flagge das Direktlinkmenü öffnen und dort die Windows PowerShell (Administrator öffnen):

linux00.png

Die Benutzerkontensteuerung wird nun nach Administratorberechtigungen fragen:

linux01.png

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

eingeben und ausführen. Falls das Feature nicht gefunden wird, ist das System vermutlich nicht auf dem neuesten Stand und sollte aktualisiert werden.

linux02.png

linux03.png

Nach Abschluss der Feature-Aktivierung den Rechner neu starten.

linux04.png

Nach dem Neustart des Rechners den Microsoft Store öffnen (z.B.: Startmenü öffnen und nach Microsoft Store suchen).

linux05.png

Im Microsoft Store nun nach Ubuntu suchen. Alternativ existieren OpenSUSE Leap, SUSE Linux Enterprise Server, Debian und Kali Subsysteme für Windows, die auch verwendet werden können und über den Microsoft Store installiert werden können.

linux06.png

Dann auf „Herunterladen“ klicken, um das gewählte Subsystem zu installieren.

linux07.png

Nach Abschluss der Installation das Subsystem starten (Kann man auch über das Startmenü machen, z.B. einfach nach Ubuntu suchen).

linux08.png

Beim ersten Start wird nun das Subsystem eingerichtet. Dies wird einige Zeit in Anspruch nehmen.

linux09.png

Um die Einrichtung abzuschließen, wird noch nach einem Nutzernamen und einem Passwort für das Linux-Subsystem gefragt. Hier können Sie frei wählen und sollten ein sicheres Passwort wählen.

linux10.png

3.2. Konfiguration

OpenSSH kann nun wie unter Linux verwendet werden.

linux11.png

linux12.png

linux13.png