Benutzer-Werkzeuge

Webseiten-Werkzeuge


lin_sshppk

Private & Public Key

Autor: Niko, erstellt am 13.07.2019

Voraussetzungen auf dem Linux-Desktop (Quellsystem):
- openssh-client apt install openssh-client -y
Voraussetzungen auf dem Remotehost (Zielsystem):
- openssh-server apt install openssh-server -y

Dieses Verfahren gibt uns die Möglichkeit mit einer verschlüsselten Verbindung zu arbeiten. Passwörter im Klartext auf der Kommandozeile sind damit Vergangenheit. Ein weiterer sehr großer Vorteil ist, daß das Passwort des verwendeten „Hauptbenutzers“ mit dem sich Freunde und Familie am System anmelden nicht mehr geändert werden muss und geheim bleibt, da jedes Private/Public-Key-Pärchen sein eigenes Passwort hat und einmal mit dem Keyverfahren authentifiziert, entfällt auch die lästige Neueingabe des Passworts - nur solange die Session besteht. Ein weiterer Vorteil ist, daß die userspezifische Anmeldung im Gegensatz zur „einen User mit dem selben Passwort für alle“ nachvollzogen werden kann.
Vereinfachen wir das am Beispiel des Systemverwalterkontos „root“ mit dem Passwort „RootBier“. Ich möchte mich von meinem Desktop-PC auf meinen Debianserver ohne grafischen Desktop mittels Konsole verbinden:

SSH ohne Keyverfahren

  1. Terminal/ Shell öffnen und mit SSH (Secure Shell) auf den entfernten Rechner mit der IP 10.0.0.2 verbinden
    snorri@Rasputin:~$ ssh root@192.168.111.2
    The authenticity of host '192.168.111.2 (192.168.111.2)' can't be established.
    ECDSA key fingerprint is SHA256:juhkI4MaBgz4/x+/xHTElNlLVQAIrXCCgmnRGpZ45JA.
    Are you sure you want to continue connecting (yes/no)? 

Wenn es die erste Verbindung zu einem System ist, ist der entfernte Rechner noch nicht „vertrauenswürdig“. Um die Vertrauensstellung herzustellen einfach auf der Konsole yes eingeben und die Entertaste drücken.

Warning: Permanently added '192.168.111.2' (ECDSA) to the list of known hosts.
root@192.168.111.2's password: 

Jetzt wurde im Homeverzeichnis meines Benutzers auf dem Desktoprechner unter .ssh die Datei known_hosts angelegt. Es fehlt nur noch der Login mit dem Benutzer root und dem Passwort RootBier auf dem entfernten System.

snorri@Rasputin:~$ ssh root@192.168.111.2
root@192.168.111.2's password: 
Linux buster 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@buster:~# 
Hinweis

SSH mit dem User root sind per se aus Sicherheitsgründen nicht erlaubt und bedürfen einer Anpassung der SSH/SSHD Konfiguration am Zielsystem. Wundert euch also nicht wenn es bei Euch nicht mit der Benutzer/Passwortkombination funktioniert!

Keys generieren

Jetzt generieren wir uns RSA Schlüssel mit 4096Bit Länge und einem Passwort. Das hier verwendete Passwort kann - muss nicht - das Passwort RootBier sein. Verwendet aber lieber ein anderes, damit ihr den Unterschied auch wirklich seht und bemerkt! Öffnet dazu wieder auf eurem Linux-Desktop ein Terminal:

snorri@Rasputin:~$ ssh-keygen -b 4096 -t rsa -P Ultra-Geheim -C "Tante Ursel"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/snorri/.ssh/id_rsa): 
Your identification has been saved in /home/snorri/.ssh/id_rsa.
Your public key has been saved in /home/snorri/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hJRjasnSwcsMMBPggmDMFXmig+5Eso3Z9QN5bRYPytQ Tante Ursel
The key's randomart image is:
+---[RSA 4096]----+
|@+.+o .o         |
|==.ooo=.E        |
|+..*oX.+.+       |
|++. & +.+ .      |
|+*.+ + oS        |
|+oo   o          |
|o      .         |
| .               |
|                 |
+----[SHA256]-----+

Alle Parameter und Werte für ssh-keygen bekommst du mit man ssh-keygen angezeigt. Hier schauen wir uns die verwendeten an.
-b: legt die Anzahl der Bits für den Schlüssel fest
-t: Verschlüsselungsalgorhytmus, hier RSA
-P: Legt das Passwort für das Schlüsselpaar fest, wenn der Teil -P Ultra-Geheim weg gelassen wird, fragt ssh-keygen während der Generierung nach einem Passwort.
-C: Kommentar, der im Keyfile ganz am Ende steht und die Zuordnung von User zu Keyfile immens vereinfacht.
Enter file in which to save the key (/home/snorri/.ssh/id_rsa):: Einfach Enter drücken um die Keyfiles in eurem Homeverzeichnis unter .ssh abzulegen.

Wo sind die generierten Files zu finden

Die generierten Keyfiles werden standardmäßig in deinem Homeverezichnis unter /home/$USER/.ssh als id_rsa (Private Key) und id_rsa.pub (Public Key) abgelegt. Öffne den Public-Key mal mit einem Texteditor ;-) da taucht auch Taten Ursel wieder auf.

Welcher Key wohin

Als Faustregel: Der Privatekey verlässt das Haus nicht!!!
Kopiert mit scp, sftp oder einem USB-Stick den Privatekey auf euer Zielsystem in das Homeverzeichnis des Users mit dem ihr euch am Remotehost anmelden wollt.

  • Key in das Homeverzeichnis kopieren, z.B. root:
snorri@Rasputin:~$ scp .ssh/id_rsa.pub root@192.168.111.2:
root@192.168.111.2's password: 
id_rsa.pub                                                                                                                    100%  732     1.3MB/s   00:00    
  • Mit ssh auf den Remoterechner verbinden
snorri@Rasputin:~$ ssh root@192.168.111.2
root@192.168.111.2's password: 
Linux buster 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Jul 13 15:28:33 2019 from 192.168.111.1
root@buster:~# 
  • .ssh auf dem Zielsystem erstllen, danach id_rsa.pub nach .ssh verschieben
root@buster:~# mkdir -p .ssh && mv id_rsa.pub .ssh
root@buster:~# 
  • Die Datei authorized_keys anlegen, den Key darin einfügen und id_rsa.pub wieder löschen
root@buster:~# cat .ssh/id_rsa.pub >> .ssh/authorized_keys && rm .ssh/id_rsa.pub 
root@buster:~#
  • Kontrolle
root@buster:~# ls .ssh/ && cat .ssh/authorized_keys 
authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCuuicrADBhIMie4FZwfwq5laUx+Oifz1YS3Oj+0MVIMZZpgJvnGnHilWjJFLIy6Y2Vkg23VNkS3WA1y0IXG/OPqeOBefHm+YC62uXZ/+KjQIAOjcmnICHXj3yLXhAyDYo8QgJTxwXwPLcvdtPhZWcVL3MxByk7QQBqunWXvQOk0mvtVm++asqP4oyjuBS5Qp0HKcRVlXswmbJAY6fA+2N1ofs07Q4XhLtzabjI4DGOc+iCMgvR8MW0oe2m08xAB9l78rXeN5S+wrD2Rso5PM614eBWEjKXR3wSS9L8nYkSGb+OcanIqiqBfbQC/8n5v+IvqKurbU60noPiSfZiJbB0zSNSTjMhH6mJ60vu92vheZl0rBDFLG75ZLQKQ6zrLp/bahqst9QTSDo22q3qXRB6kgg+5w2PQidaXLiZ98LdFTk5ym2E3Q4aa/OLx456hpGjJt+boZy3mIwhQa9BR4eag7WmWCXa6AiZSx+HfautXrilrl/PVa8xPzJu9+p8qfBaoaxIpzdFix31gjKLIORuluDHAMPZv0KuDDTD/xmRHyUTMESPHdXnXdgr+jcYg8FoUiT/9BGV2NfymnvCy7XXZd3oDwq9x1I6I6E2Mp+gp4XoCVm534PWTQ6OeeM2lYmvKm/eR70JLkAxhLH3UlrrX4ngoAXMoYnBfP7jBz2BvQ== snorri
root@buster:~# 

Test der Verbindung mit Key

Verlasst Eure SSH Session auf dem Zielsystem mit dem Befehl exit und verbindet Euch erneut mit SSH auf das Zielsystem mit ssh root@192.168.111.2
Diesmal kommt nicht die Passwortabfrage im Terminalfenster, sondern euer Linux-Desktoprechner öffnet ein neues Fenster für die Passwortabfrage.

Nun kann sich jeder der das Kennwort für den Public-Key hat als Systemverwalter root auf dem entfernten System anmelden.

SSH mit anderem User

Falls du das Selbe mit einem Standarduser (nicht oder neben dem root) auf dem Zielsystem machen willst, stelle sicher das der Useraccount und das Homeverzeichnis bereist existiert. Benutzer anlegen kann nur der Systemverwalter root!

  1. Verbinde dich mit SSH auf das Zielsystem ssh root@192.168.111.2 und lege den User jockel mit dem Passwort diridari an:
root@buster:~# useradd jockel -m -p diridari
root@buster:~# 
  1. Kopiere den Private-Key und verbinde dich mit SSH auf den Remotehost
 snorri@Rasputin:~$ scp .ssh/id_rsa.pub root@192.168.111.2:
id_rsa.pub                                                                                                                    100%  741     1.1MB/s   00:00    
snorri@Rasputin:~$ ssh root@192.168.111.2
Linux buster 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Jul 13 16:20:23 2019 from 192.168.111.1
root@buster:~# 
  1. Verschiebe das Keyfile id_rsa.pub in das Homeverzeichnis von jockel und wechsle in der Konsole in das Homeverzeichnis von jockel, bereite die Verzeichnisse und authorized_key vor und lösche den Privat-Key wieder aus dem Homeverzeichnis von jockel
root@buster:~# mv id_rsa.pub /home/jockel
root@buster:~# cd /home/jockel/
root@buster:/home/jockel# 
root@buster:/home/jockel# mkdir -p .ssh && cat id_rsa.pub >> .ssh/authorized_keys && rm id_rsa.pub 
  1. Prüfe die authorized_key im Home von jockel
root@buster:/home/jockel# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsDwM/hJ7gkTu1CSgX6Lapoa1meMW1JmUjfJ8RQ7mjj++ViFrXU4oWNdzBvV0QcrydRZxmAQEae0RIA5HfGWAp8gJA/J8+gTDGWO2ddpMWQFRa4nkAcQYrxFRD3gJkXtb5MzdAj6e6C4A/OGGgaE9uwGvVBWtJhkea/8aOz8MwocAyXkQUAnMWJYg5Kyc4coZAH1tHIILtdNEPVdvomIN7cGSG3h0xr0uPYhArxQDylwm5Oj0L19LpdVQM0MZNmPFFcaPNcQ3YrP9+PUU2CDia4dn+A2AIyW2Ph7QYEiVjDkqiCPXRdq7nzAlykb+OW/PpvyUzWdt3mnWK+K/Abe7cIoSOqOXcP/ySK+zHhUIBCWcyPVOeZ8Cx6DKkph35sELNTmpYFlcGdvUEDjmh23kHWqiOXrPyKIy0tI7TQgVVGcvkATtcDwcLjKYTOC09/DXsFZnSkI50jqirur3T7X2RxQX8G2fNgOOZDy0N4VCKLGrX4EK98P9RzxnGLbyL+ivMxDFvymszm5StFVBiERdc6G327otOe0E1s2nIO8TJKbO6GjmsVdK+cR5J94lGAZ3maog7oKFFDpgo0VgoD2cdly+reQteVlUSpdmoqU85oXge156WFnsDmRWOk6mNai5tqFpRJaSYIfwv/wfheTH0v3yUzq19pNVWprjVHKL15Q== snorri@rasputin
root@buster:/home/jockel# 
  1. Test die Verbindung mit dem User jockel. Zuerst wieder als root mit exit abmelden.
root@buster:/home/jockel# exit
Abgemeldet
Connection to 192.168.111.2 closed.
snorri@Rasputin:~$ 
snorri@Rasputin:~$ ssh jockel@192.168.111.2
Linux buster 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
$ 
User oder Root?

Manchmal stellt man sich die Frage mit welchen Rechten man gerade auf der Konsole des entfernten Rechners unterwegs ist. Als root ist der Prompt auf der Konsole immer ein #, bei einem normalen User wie jockel hingegen ist der Prompt immer ein $. Alternativ kannst du mit dem Befehl whoami (Who am I) nachsehen:

$ whoami
jockel
$ 
lin_sshppk.txt · Zuletzt geändert: 25.07.2019 09:29 von radirgummir

Seiten-Werkzeuge