Intelligente Lösungen
in neuer Dimension

SSH: Schlüsselpaar mit dem Hardware-Token SoloKey

Für die Arbeit an Linux-Servern verwenden wir sehr gerne SSH in Verbindung mit Schlüsselpaaren. So kann man sich an den Servern anmelden, ohne dass dauernd ein Kennwort eingegeben werden muß.

Diese Anleitung wurde erstellt mit Ubuntu-20.04 und einem SoloKey 3.0.0

Standard-SSH-Schlüsselpaar

Mit dem Standard-SSH-Schlüsselpaar muß man bei jeder SSH-Anmeldung den “Knopf” auf dem SoloKey drücken. Sicherheitstechnisch hat das den Vorteil, dass nicht unbemerkt im Hintergrund SSH-Verbindungen aufgebaut werden können, denn sie erfordern ja diesen manuellen Eingriff. Nachteilig ist, dass man eventuell sehr häufig den Knopf drücken muß. Wenn man bspw. ein Skript ausführt, das nacheinander 5 Kommandos via SSH ausführen möchte, dann muß man 5-mal auf den Knopf drücken.

Unschön ist zusätzlich, dass keine Aufforderung zur Betätigung des Knopfes erscheint, die Ausführung bleibt einfach hängen! Wenn man die Gummihülle vom SoloKey entfernt, dann sieht man, dass die Leuchtdiode anders leuchtet wenn eine Betätigung ansteht.

SSH-Schlüsselpaar anlegen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[email protected]:~$ ssh-keygen  -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.

# Ausführung bleibt hängen - Knopf auf dem SoloKey drücken!

Enter passphrase (empty for no passphrase): (meine-passphrase)
Enter same passphrase again:  (meine-passphrase)
Your identification has been saved in /home/uli/.ssh/id_ecdsa_sk
Your public key has been saved in /home/uli/.ssh/id_ecdsa_sk.pub
The key fingerprint is:
SHA256:sJ42o9jqKvZGiDUCXTj6C/DzVH7Exbr636TfVqmnEPc [email protected]
The key's randomart image is:
+-[ECDSA-SK 256]--+
| . o.    .       |
|. +       o      |
|.. .  .. o       |
|+ o   .o+        |
|o=.. o..S. . .  .|
|o.+.....o   o ...|
| ..=  *o   .. .E |
|...+.o.o   +.o.. |
|+o*oo  ...o.oo+  |
+----[SHA256]-----+

Schlüssel auf Server hinterlegen

1
2
3
4
5
6
7
8
9
[email protected]:~$ ssh-copy-id -i .ssh/id_ecdsa_sk gitea
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_ecdsa_sk.pub"
/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

Number of key(s) added: 1

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

Schlüssel in SSH-Agent hinterlegen

1
2
3
[email protected]:~$ ssh-add ~/.ssh/id_ecdsa_sk
Enter passphrase for /home/uli/.ssh/id_ecdsa_sk:  (meine-passphrase)
Identity added: /home/uli/.ssh/id_ecdsa_sk ([email protected])

Serveranmeldung mit neuem Schlüssel

1
2
3
4
5
6
7
8
9
10
11
[email protected]:~$ ssh -i .ssh/id_ecdsa_sk gitea

# Ausführung bleibt hängen - Knopf auf dem SoloKey drücken!

Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.8.0-36-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Sat Jan  9 11:36:59 2021 from 10.38.131.1
[email protected]:~# 

Knopflos-Schlüsselpaar

Man kann das Schlüsselpaar auch so anlegen, dass das Betätigen den Knopfes nicht mehr notwendig ist. Dies vereinfacht den Vorgang des Anmeldens. Nachteilig ist, dass man somit nicht mehr “mitbekommt”, wenn ein Hintergrundprogramm SSH-Verbindungen aufbaut.

Knopflos-SSH-Schlüsselpaar anlegen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[email protected]:~$ ssh-keygen  -Ono-touch-required -t ecdsa-sk -f ~/.ssh/id_ecdsa_notouch_sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.

# Ausführung bleibt hängen - Knopf auf dem SoloKey drücken!

Enter passphrase (empty for no passphrase): (meine-passphrase)
Enter same passphrase again:  (meine-passphrase)
Your identification has been saved in /home/uli/.ssh/id_ecdsa_notouch_sk
Your public key has been saved in /home/uli/.ssh/id_ecdsa_notouch_sk.pub
The key fingerprint is:
SHA256:m95XBquHxumms0ijf9je1tlfvSWxDKixKiZgxosSmnE [email protected]
The key's randomart image is:
+-[ECDSA-SK 256]--+
|                 |
|                 |
|                 |
|           ..    |
|.       S . .o.  |
|++E      *  .ooo.|
|=*.   oo=. = =+ +|
|=.. oo.=+oO = ..+|
|.  o.o+o=O+o   o.|
+----[SHA256]-----+

Knopflos-Schlüssel auf Server hinterlegen

Wir können den Schlüssel nicht einfach mit ssh-copy-id auf dem Server hinterlegen, weil wir beim Hinterlegen die Option “no-touch-required” mit angeben müssen. Also:

  1. Anmelden am Server: ssh gitea
  2. Anpassen von .ssh/authorized_keys:

    no-touch-required [email protected] AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZ... [email protected]

  3. Sicherstellen: Zugriffsrechte passen: chmod 700 .ssh; chmod 600 .ssh/authorized_keys

Knopflos-Schlüssel in SSH-Agent hinterlegen

1
2
3
[email protected]:~$ ssh-add ~/.ssh/id_ecdsa_notouch_sk
Enter passphrase for /home/uli/.ssh/id_ecdsa_notouch_sk:  (meine-passphrase)
Identity added: /home/uli/.ssh/id_ecdsa_notouch_sk ([email protected])

Serveranmeldung mit neuem Knopflos-Schlüssel

1
2
3
4
5
6
7
8
[email protected]:~$ ssh -i .ssh/id_ecdsa_notouch_sk gitea
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.8.0-36-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Sat Jan  9 11:36:59 2021 from 10.38.131.1
[email protected]:~# 

Tests und Probleme

Verwendung des Schlüsseltyps “ed25519-sk”

1
2
3
4
[email protected]:~$ ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519_sk
Generating public/private ed25519-sk key pair.
You may need to touch your authenticator to authorize key generation.
Key enrollment failed: requested feature not supported

Test mit SLES11

Anmeldetests mit SLES11 sind gescheitert. Weder Standard-SSH-Schlüsselpaar noch das Knopflos-SSH-Schlüsselpaar funktionieren!

Auf dem SLES11-Rechner ist SSH-2.0-OpenSSH_6.6.1 aktiv!

Test mit SLES12

Anmeldetests mit SLES12 sind gescheitert. Weder Standard-SSH-Schlüsselpaar noch das Knopflos-SSH-Schlüsselpaar funktionieren!

Auf dem SLES12-Rechner ist SSH-2.0-OpenSSH_7.2 aktiv!

Test mit Ubuntu-14.04

TBD – SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13

Test mit Ubuntu-16.04

TBD – OpenSSH-7.2

Test mit Ubuntu-18.04

  • Standard-OpenSSH-7.6: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 – klappt nicht!
  • Rückportiertes OpenSSH-8.2: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4dp01~bionic0.1 – klappt!

Test mit Ubuntu-20.04

Klappt! Das ganze Dokument habe ich mit Ubuntu-20.04 durchgespielt!

Links und Referenzen

Historie und Anmerkung

  • 2020-01-16: Ubuntu-18.04 mit OpenSSH.8.2
  • 2021-01-09: Erste Version