Kategorien
Allgemein

ssh

Die SecureSHell (ssh) eignet sich hervorragend um entfernte Rechner, z.B. Server, zu administrieren. ssh besteht aus zwei Komponenten, dem Client ssh und dem Server sshd. Dazu gesellen sich viele kleine Helfertools.

Public Key Verfahren

Bei dem Public Key Verfahren authentifiziert sich der Benutzer nicht mit seinem Namen und Passwort, sondern es wird ein asymmetrische Verschlüsselungsverfahren genutzt. Der Benutzer erzeugt für jeden Client einen eigenes Schlüsselpaar, bestehend aus privaten und öffentlichen Schlüssel. Der private Schlüssel dient dann als Berechtigung gegenüber dem Serversystem.

Schlüssel erzeugen

Zunächst muss der Benutzer die Schlüssel auf dem Clientrechner erzeugen. Dazu dient das Programm ssh-keygen. Das Programm fragt nach einen Dateinamen für den erzeugten Schlüssel. Dieser kann im allgemeinen bestätigt werden, es sei denn man möchte mehrere Schlüssel für unterschiedliche Server erstellen. Die Passphrase schützt den privaten Schlüssel vor Missbrauch, sie sollte daher nicht leer sein. Sie muss bei jeder Benutzung eingegeben werden. Später werde ich ergänzen, wie man das umgehen kann 🙂

tocs@client:~$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/tocs/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tocs/.ssh/id_rsa. 
Your public key has been saved in /home/tocs/.ssh/id_rsa.pub. 
The key fingerprint is: 38:0e:0a:fe:6f:f3:e1:7e:90:e5:5e:37:3f:dc:6f:51 tocs@client 
The key's randomart image is: 
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|       . .      E|
|.   . o S       .|
|.. . o + . . o . |
| ..   ..o . . + o|
|  .  o. .o     +o|
|   .o.++.      .+|
+-----------------+

Öffentlichen Schlüssel verteilen

Der private Schlüssel verbleibt immer auf dem Client. Den öffentlichen darf bzw. muss man verteilen. Dabei hilft das Programm ssh-copy-id.

tocs@client:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@server
root@server's password:
Now try logging into the machine, with "ssh 'root@server'", and check in:
  ~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Testen des Public Key Verfahren

ssh-copy-id legt nahe, man solle die Verbindung nun testen und den Inhalt von ~/.ssh/authorized_keys prüfen. Dieser sollte identisch mit der Datei .ssh/id_rsa.pub auf dem Client sein.

tocs@client:~$ ssh 'root@server'
Enter passphrase for key '/home/tocs/.ssh/id_rsa':
Welcome to server :)
root@server:~# cat .ssh/authorized_keys

Verwaltung vereinfachen

tocs@endor:~$ ssh-add -l
The agent has no identities.
tocs@endor:~$ ssh-add
Enter passphrase for /home/tocs/.ssh/id_rsa:
Identity added: /home/tocs/.ssh/id_rsa (/home/tocs/.ssh/id_rsa)

Noch mehr vereinfachen

.kde/Autostart/ssh-add.sh
#!/bin/bash
export SSH_ASKPASS=/usr/bin/ksshaskpass
/usr/bin/ssh-add