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 | 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 |
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 |
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.
$> ssh RBG-username@hostname
eine SSH-Verbindung aufbauen.
Also in unserem Fall z.B$> ssh musterma@lxhalle.in.tum.de oder $> ssh musterma@ssh.ma.tum.deFalls 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 richtig ist, kann die Abfrage bestätigt werden. Nun wird man noch nach seinem Passwort gefragt werden und man sollte am Server eingeloggt sein.
touch ~/.ssh/configerstellen. Danach öffnet man die Konfigurationsdatei (config) mit einem Texteditor z.B. vi oder vim im Terminal.
vim ~/.ssh/configEin Beispiel Hosteintrag sieht wie folgt aus :
Host * IdentitiesOnly yes ServerAliveInterval 15 Host <i>aliasname</i> HostName <i>FQDN oder IP des Server</i> User <i>username</i> Port <i>Port</i> IdentityFile <i>PfadzumKeyfile</i>Um eine SSH-Verbindgung ohne Passwort zur Lxhalle auszubauen, braucht man eine Konfigurationsdtei wie unten
Host * IdentitiesOnly yes ServerAliveInterval 15 Host lxhalle HostName lxhalle.in.tum.de User musterma IdentityFile /Users/max/.ssh/id_rsa_lxhalle
Zum Generieren eines SSH Keys folgendes Befehl ausführen.
ssh-keygen -t rsa -b 4096– b steht für die bits Anzahl womit die Länge des Schlüssels bestimmt werden kann.
Wenn Sie das angeben werden Sie nach einem Pfad nachgefragt wo 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]-----+
$> ssh-copy-id RBG-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 authorisierter Key installiert worden sein und ein Login mit
ssh -i !PfadZumKeyfile username@hostnamemöglich sein. Alternativ kann man das Identityfile wie oben spezifiziert in der SSH-Configuration angeben und sich mit ssh alias verbinden.
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]
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 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 RBG-username@lxhalle.in.tum.deHier 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(das Flag -r angeben, damit der Ordner rekursiv übertragen wird) herunter- bzw. hochladen. Mehr zum SFTP-Tool der OpenSSH-Implementierung findet man im Manual.
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.
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.
Die folgenden Screenshots führen durch die Installation:
Hier kann man den Pfad anpasse welcn, anhem Putty installiert werden soll.
Nach erfolgreicher Installation nun Putty starten. Dies kann man z.B. durch drücken der Windows-Taste und darauffolgendes Suchen von Putty machen:
Nun unter Data den Nutzeraccount eintragen:
In unserem Beispiel ist dies der Nutzer "Max Mustermann" mit der Kennung "musterma":
Falls ein SSH-Key vorhanden ist, kann man den unter SSH / Auth eintragen:
Die Eingaben kann man unter Session speichern (einen Namen geben und auf Save klicken):
Wenn man nun auf Open klickt wird die Verbindung zum Server aufgebaut (bei Erstverbindung wird der Hostkey abgefragt, siehe Tabelle oben):
Falls kein SSH-Key vorhanden ist oder er nicht erkannt wird, wird nun das Passwort abgefragt:
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.
Mit Windows-Logo-Taste + X oder rechts klick auf die Windowsflagge das Direktlinkmenü öffnen und dort die Windows PowerShell (Administrator öffnen):
Die Benutzerkontensteuerung wird nun nach Administratorberechtigungen fragen:
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 aktuellsten Stand und sollte aktualisiert werden.
Nach Abschluss der Feature Aktivierung den Rechner neustarten.
Nach Neustart des Rechners den Microsoft Store öffnen (z.B.: Startmenü öffnen und nach Microsoft Store suchen).
Dann auf Herunterladen klicken, um das gewählte Subsystem zu installieren.
Nach Abschluss der Installation das Subsystem starten (Kann man auch über das Startmenü machen z.B. einfach nach Ubuntu suchen)
Beim ersten Start wird nun das Subsystem eingerichtet. Dies wird einige Zeit in Anspruch nehmen.
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.
OpenSSH kann nun wie unter Linux verwendet werden.