wiki.in.tum.de
Technische Universität München
You are here: Foswiki>Informatik/Helpdesk Web>Ssh (04 Apr 2019, MatthiasPuchsteinGa67hac)Edit Attach

SSH Zugriff

https://www.ssh.com/ssh/



0. Fingerprints

Ein Schlüsselfingerprint bei SSH ist ein Hash aus dem Public Key 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 auf einmal auf einen bösen Server weisen würde).

Die ECDSA Keys wurden aus Sicherheitsgründen deaktiviert.

Lxhalle:

In der folgenden Tabelle sind die Fingerprints für lxhalle.informatik.tu-muenchen.de aufgelistet.
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.ma.tum.de:

In der folgenden Tabelle sind die Fingerprints für ssh.ma.tum.de aufgelistet.
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

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 exisitert 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 aktuellstem Updatestand ist. Links:

1.1 Verbindung

> usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
> [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
> [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
> [-i identity_file] [-J [user@]host[:port]] [-L address]
> [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
> [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
> [-w local_tun[:remote_tun]] destination [command]

Das Terminal(MacOS/Linux) oder die Powershell(Windows) öffnen.
In diesem kann man nun mit
$> ssh username@hostname

eine SSH-Verbindung aufbauen.

Also in unserem Fall

$> ssh RBG-Kennung@lxhalle.in.tum.de

oder

$> ssh RBG-Kennung@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-Keys 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 richtig ist, kann die Abfrage bestätigt werden. Nun wird man noch nach seinem Passwort gefragt werden und man sollte am Server eingeloggt sein.

1.2 OpenSSH Konfiguration

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

Beispiel Hosteintrag:

1: Host <i>aliasname</i>
2: HostName <i>FQDN oder IP des Server</i>
3: User <i>username</i>
4: Port <i>Port</i>
5: IdentityFile <i>PfadzumKeyfile</i>

Beispiel Hosteintrag für lxhalle.in.tum.de ohne ein KeyFile:

1: Host lxhalle
2: HostName lxhalle.in.tum.de
3: User <i>RBG-Kennung</i>

Die OpenSSH Konfigurationsdatei für Nutzer liegt im Heimverzeichnis dessen im .ssh Ordner. Also unter Linux:

~/.ssh/config

Falls die Datei noch nicht vorhanden ist, kann diese einfach mit

 touch ~/.ssh/config

erstellen und mit einem Texteditor bearbeiten.

1.3 SSH Key

> usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
> [-N new_passphrase] [-C comment] [-f output_keyfile]
> ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
> ssh-keygen -i [-m key_format] [-f input_keyfile]
> ssh-keygen -e [-m key_format] [-f input_keyfile]
> ssh-keygen -y [-f input_keyfile]
> ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
> ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
> ssh-keygen -B [-f input_keyfile]
> ssh-keygen -D pkcs11
> ssh-keygen -F hostname [-f known_hosts_file] [-l]
> ssh-keygen -H [-f known_hosts_file]
> ssh-keygen -R hostname [-f known_hosts_file]
> ssh-keygen -r hostname [-f input_keyfile] [-g]
> ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
> ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
> [-j start_line] [-K checkpt] [-W generator]
> ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
> [-D pkcs11_provider] [-n principals] [-O option]
> [-V validity_interval] [-z serial_number] file …
> ssh-keygen -L [-f input_keyfile]
> ssh-keygen -A
> ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
> file ...
> ssh-keygen -Q -f krl_file file …

Zum Generieren eines SSH Keys einfach ssh-keygen ausführen.
$> ssh-keygen
> Generating public/private rsa key pair.
> Enter file in which to save the key (/home/"$USER"/.ssh/id_rsa): <path>
> 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]-----+

Diesen Key muss man nun noch auf den Server übertragen. I.d.R. kann man dies einfach über ssh-copy-id erledigen.
$> ssh-copy-id
>Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
> -f: force mode -- copy keys without trying to check if they are already installed
> -n: dry run    -- no keys are actually copied
> -h|-?: print this help

$> ssh-copy-id -i PfadZumKeyfile username@hostname
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "<Pfad zum !Keyfile>"
/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 authorisierter Key installiert worden sein und ein Login mit ssh -i PfadZumKeyfile username@hostname möglich sein. Alternativ kann man das Identityfile wie oben spezifiziert in der SSH-Configuration angeben und sich mit ssh alias verbinden.


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] [-l limit]
>           [-o ssh_option] [-P port] [-R num_requests] [-S program]
>           [-s subsystem | sftp_server] host
>        sftp [user@]host[:file ...]
>        sftp [user@]host[:dir[/]]
>        sftp -b batchfile [user@]host

Dazu kann man einfach das mit der OpenSSH-Implementierung mitgelieferte sftp Tool nutzen. Dazu einfach in das Terminal/Powershell sftp eingeben. Die Parameter sind analog zum ssh Befehl, nur das manche Flags fehlen, wie zB X11-Forwarding. Man kann auch die in der SSH-Config definierten Hosts nutzen.

z.B. also:
> $ sftp <i>username</i>@lxhalle.in.tum.de

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

Mehr zum SFTP-Tool der OpenSSH-Implementierung findet man im Manual.


1.5 X11 Forwarding

Unter den meisten Linux Systemen dient das X Windows System 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 ein Anwendung starten und die grafische Darstellung 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.(zB pacman -S xorg oder apt install xorg)

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

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


2. Legacy Methode Windows (Putty)

Putty benötigt man auf älteren Windows Systemen um eine SSH Verbindung aufbauen zu können, da Microsoft sich dem Industiestandard ziemlich lang verweigert hat.

2.1 Installation

Den aktuellen Installer für Putty bekommt man unter www.putty.org. Diesen herunterladen und ausführen.

Die folgenden Screenshots führen durch die Installation:

putty00.png

putty01.png

Hier kann man den Pfad anpassen, an welchem Putty installiert werden soll.

putty03.png

putty04.png

putty05.png

2.2 Konfiguration

Nach erfolgreicher Installation nun Putty starten. Dies kann man z.B. durch drücken der Windows-Taste und darauffolgendes Suchen von Putty machen:

puttykonfig00.png

Nun in dem geöffneten Fenster die Serveradresse angeben:

puttykonfig01.png

Nun unter Data den Nutzeraccount eintragen:

puttykonfig02.png

In unserem Beispiel ist dies der Nutzer "Max Mustermann" mit der Kennung "musterma":

puttykonfig03.png

Falls ein SSH-Key vorhanden ist, kann man den unter SSH / Auth eintragen:

puttykonfig09.png

Die Eingaben kann man unter Session speichern(Einen Namen geben und auf Save klicken):

puttykonfig06.png

puttykonfig07.png

Wenn man nun auf Open klickt wird die Verbindung zum Server aufgebaut (bei Erstverbindung wird der Hostkey abgefragt, siehe Tabelle oben):

puttykonfig04.png

Falls kein SSH-Key vorhanden ist oder er nicht erkannt wird, wird nun das Passwort abgefragt:

puttykonfig05.png


3. Linux Subsystem für Windows 10

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

3.1 Installation

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

linux00.png

Die Benutzerkontensteuerung wird nun nach Administratorberechtigungen fragen:

linux01.png

Hier nun

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

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

linux02.png

linux03.png

Nach Abschluss der Feature aktivierung den Rechner neustarten.

linux04.png

Nach 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 existeren 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

Nun 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 Passwort für das Linux Subsystem gefragt. Hier können Sie freiwä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

-- MatthiasPuchsteinGa67hac - 01 Oct 2018
Topic attachments
I Attachment Action Size Date Who Comment
linux00.pngpng linux00.png manage 276 K 14 Nov 2018 - 15:49 MatthiasPuchsteinGa67hac  
linux01.pngpng linux01.png manage 161 K 14 Nov 2018 - 15:49 MatthiasPuchsteinGa67hac  
linux02.pngpng linux02.png manage 82 K 14 Nov 2018 - 15:49 MatthiasPuchsteinGa67hac  
linux03.pngpng linux03.png manage 80 K 14 Nov 2018 - 15:50 MatthiasPuchsteinGa67hac  
linux04.pngpng linux04.png manage 85 K 14 Nov 2018 - 15:50 MatthiasPuchsteinGa67hac  
linux05.pngpng linux05.png manage 293 K 14 Nov 2018 - 15:50 MatthiasPuchsteinGa67hac  
linux06.pngpng linux06.png manage 567 K 14 Nov 2018 - 15:50 MatthiasPuchsteinGa67hac  
linux07.pngpng linux07.png manage 66 K 14 Nov 2018 - 15:50 MatthiasPuchsteinGa67hac  
linux08.pngpng linux08.png manage 67 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linux09.pngpng linux09.png manage 42 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linux10.pngpng linux10.png manage 48 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linux11.pngpng linux11.png manage 70 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linux12.pngpng linux12.png manage 76 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linux13.pngpng linux13.png manage 79 K 14 Nov 2018 - 15:51 MatthiasPuchsteinGa67hac  
linuxsub01.pngpng linuxsub01.png manage 287 K 15 Nov 2018 - 12:09 MatthiasPuchsteinGa67hac  
putty00.pngpng putty00.png manage 217 K 12 Nov 2018 - 12:04 MatthiasPuchsteinGa67hac  
putty01.pngpng putty01.png manage 208 K 12 Nov 2018 - 12:04 MatthiasPuchsteinGa67hac  
putty03.pngpng putty03.png manage 212 K 12 Nov 2018 - 12:05 MatthiasPuchsteinGa67hac  
putty04.pngpng putty04.png manage 158 K 12 Nov 2018 - 12:05 MatthiasPuchsteinGa67hac  
putty05.pngpng putty05.png manage 215 K 12 Nov 2018 - 12:05 MatthiasPuchsteinGa67hac  
puttykonfig00.pngpng puttykonfig00.png manage 260 K 12 Nov 2018 - 12:56 MatthiasPuchsteinGa67hac  
puttykonfig01.pngpng puttykonfig01.png manage 225 K 12 Nov 2018 - 12:56 MatthiasPuchsteinGa67hac  
puttykonfig02.pngpng puttykonfig02.png manage 225 K 12 Nov 2018 - 12:57 MatthiasPuchsteinGa67hac  
puttykonfig03.pngpng puttykonfig03.png manage 224 K 12 Nov 2018 - 12:57 MatthiasPuchsteinGa67hac  
puttykonfig04.pngpng puttykonfig04.png manage 193 K 12 Nov 2018 - 12:58 MatthiasPuchsteinGa67hac  
puttykonfig05.pngpng puttykonfig05.png manage 206 K 12 Nov 2018 - 12:58 MatthiasPuchsteinGa67hac  
puttykonfig06.pngpng puttykonfig06.png manage 226 K 12 Nov 2018 - 12:57 MatthiasPuchsteinGa67hac  
puttykonfig07.pngpng puttykonfig07.png manage 226 K 12 Nov 2018 - 12:58 MatthiasPuchsteinGa67hac  
puttykonfig09.pngpng puttykonfig09.png manage 230 K 12 Nov 2018 - 12:57 MatthiasPuchsteinGa67hac  
Topic revision: r17 - 04 Apr 2019, MatthiasPuchsteinGa67hac
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback