Empfehlungen für SSH-Keys

An dieser Stelle werden Empfehlungen zur Nutzung von SSH-Keys angegeben.

SSH-Keys generieren

Mittlerweile gelten viele Algorithmen zur Schlüsselerstellung so z.B. RSA mit geringer Schlüssellänge oder DSA als unsicher. Der sicherste Algorithmus der heutzutage zur Genernierung von SSH-Keys verfügbar ist, ist ED25519. Das RRZE emfphielt die Nutzung dieses Algorithmus zur SSH-Key Generierung:

bash$ ssh-keygen -t ed25519 
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_ed25519.
Your public key has been saved in /home/username/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:S7/10UOXix32PxaQq2PcH7o2lPzgtbdmnZ7UgWHrpY4 user@host
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|                 |
|             o.  |
|            .o+ .|
|        S   .o+B.|
|       . o  .*B+B|
|        . o *+*=O|
|           Bo*.%*|
|          oEo+X+*|
+----[SHA256]-----+

Standardmäßig wird das Schlüsselpaar im .ssh Verzeichnis des Homes angelegt. Es sollte immer ein sicheres Passphrase (Kennwort) für einen Schlüssel angegeben werden. So kann sichergestellt werden, dass ein Angreifer den privaten Schlüssel nicht ohne das Kennwort nutzen kann. Der öffentliche Schlüssel wird an gleicher Stelle mit der Endung .pub angelegt.

SSH-Keys nutzen

Damit die Authentifizierung mittels SSH-Keys genutzt werden kann, muss der öffentliche Schlüssel auf dem gewünschten Host mittels ssh-copy-id kopiert werden.

bash$ ssh-copy-id user@host
/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
Password: 

Number of key(s) added: 1

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

Für RRZE-Betreute Systeme können RRZE-Mitarbeiter SSH-Keys mittels einer SSH-Key Verwaltung im IdM Portal einpflegen. Diese Keys können dann auf Servern die am RRZE-Saltstack angebunden sind genutzt werden. Vorraussetzung hierfür ist allerdings dass keine NFS-Homes auf den jeweiligen Server benötigt werden.

SSH-Agent nutzen

Der SSH-Agent speichert einen einmal entsperrten Schlüssel zwischen, so dass nicht bei jeder Nutzung eines mit Passphrase gesicherten Schlüssels die Passphrase erneut eingegeben werden muss.

Damit das funktioniert muss der SSH-Agent am besten automatisch nach der Anmeldung gestartet werden und einige Umgebungsvariablen gesetzt werden. Zur Erhöhung der Sicherheit kann ein Timeout konfiguriert werden nach dem der jeweilige Schlüssel wieder aus dem Speicher des SSH-Agents gelöscht wird. Nach Ablauf des Timeouts muss man die Passwphrase also erneut eingeben, um den Key ein weiteres mal zu entsperren.

Um zu verhindern das der SSH-Agent mehrmals gestartet wird empfiehlt es sich zum Beispiel folgendes Script-Snippet in die ~/.bashrc einzufügen.

Bitte nicht „blind“ übernehmen. Vor allem auf Desktop-Installationen wird der SSH-Agent meist ohnehin schon automatisch gestartet.

# START: ssh-agent setup
SSH_ENV="$HOME/.ssh/environment"
SSH_TIMEOUT=3600

function start_agent {
    echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent -t ${SSH_TIMEOUT} > "${SSH_ENV}"
    echo "succeeded"
    chmod 600 "${SSH_ENV}"
    source "${SSH_ENV}"
}

if [ -f "${SSH_ENV}" ]; then
    source "${SSH_ENV}"
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent > /dev/null || start_agent
else
    start_agent
fi
# END: ssh-agent setup