Hier wird beschrieben, wie man zu Demozwecken einen SSH-Server mit monkeysphere aufbaut.

Keyserver

Wir wollen ja nicht die öffentlichen Keyserver mit unserem Demo-Zeug zumüllen, also installieren wir uns einen eigenen:

apt-get install sks
su debian-sks -c '/usr/sbin/sks build'
echo '# Nicht mit anderen Servern kommunizieren' > /etc/sks/mailsync
echo '# Nicht mit anderen Servern kommunizieren' > /etc/sks/membership
echo 'initstart=yes' >> /etc/default/sks
service sks start

Nun sollte auf localhost:11371 die gewohnte Oberfläche erscheinen. Nun wollen wir diesen Server natürlich ausprobieren: Wir laden erstmal unseren eigenen Schlüssel hoch:

gpg --keyserver NAME_DES_SERVERS --send-keys KEY_ID

Wenn das fehlerfrei funktioniert hat, dann kann man auf der Seite des keyservers wie gewohnt den Schlüssel finden.

Erstellung eines Host-Keys

Mit dem Host-Key kann die Identität des Servers über das Web of Trust verifiziert werden: Man muss nicht mehr die Fingerprints des Servers vergleichen, wenn man sich mit ihm verbindet. Hierzu führen wir als root folgende Befehle aus:

apt-get install monkeysphere
export MONKEYSPHERE_KEYSERVER=localhost
cd /etc/ssh
monkeysphere-host i ssh_host_rsa_key ssh://NAME_DES_SERVERS
monkeysphere-host p --all

Nun sollte man den Schlüssel auf unserem lokalen Schlüsselserver finden können. Jetzt müssen wir dafür sorgen, dass unser client dem Schlüssel des Servers vertraut. Hierzu müssen wir erstmal monkeysphere auf diesem Rechner installieren und dann folgendes in ~/.ssh/config hinzufügen:

Host *.*
     ProxyCommand monkeysphere ssh-proxycommand %h %p

Jetzt müssen wir den Schlüssel vom Keyserver holen und ihn signieren:

gpg --keyserver NAME_DES_SERVERS --search-keys ssh
gpg --sign-key ssh://NAME_DES_SERVERS

Nun sollte man sich einfach einloggen können. Außerdem sollte man jetzt beim Einloggen nicht gefragt werden, ob man diesem Server vertraut, da das schon von Monkeysphere erledigt wurde

Authentifizierung von Nutzern

Mit Monkeysphere kann man GPG-Schlüssel auch zur SSH-Authentifizierung verwenden. Hierzu müssen wir uns ersteinmal einen Subkey erzeugen und ihn an unseren Schlüsselserver senden:

monkeysphere gen-subkey
gpg --keyserver NAME_DES_SERVERS --send-keys KEY_ID

Nun müssen wir auf dem Server einen Zertifizierer festlegen, der bestimmt, wer in den Server darf. Dieser Zertifizierer signiert die Schlüssel, mit denen man sich einloggen kann.

monkeysphere-authentication add-identity-certifier FINGERPRINT

wobei FINGERPRINT unser GPG-Fingerprint ohne jegliche Leerzeichen ist.

Nun müssen wir für jeden Nutzer die Schlüssel-IDs festlegen, mit denen er sich einloggen darf. Hierzu bearbeiten wir ~/.monkeysphere/authorized_user_ids folgendermaßen:

M. Mustermann <mm@mm.mm>

Nun müssen wir die Liste der erlaubten Schlüssel aktualisieren, indem wir folgenden Befehl ausführen:

monkeysphere-authentication update-users

Diesen Befehl sollte man durch einen Cron-Job vielleicht täglich ausführen.

Schließlich müssen wir noch etwas an der Konfiguration des SSH-Servers bearbeiten: In /etc/ssh/sshd_config ersetzen wir

AuthorizedKeysFile %h/.ssh/authorized_keys 

durch

AuthorizedKeysFile %h/.ssh/authorized_keys /var/lib/monkeysphere/authorized_keys/%u

Nun müssen wir den Server nur noch neu starten:

service sshd restart

Nun kehren wir wieder zum Client zurück. Der vorhin generierte Subkey kann einfach dem ssh-agent hinzugefügt werden:

monkeysphere s

Hier muss man einfach nur die Passphrase eingeben, und schon kann man sich einloggen, wie man dies sonst auch tun würde.