Um sich mit einem Rechner per SSH zu verbinden, kann ein Passwort oder ein kryptografisches Schlüsselpaar genutzt werden. Aus Gründen der Sicherheit sollte ein Login über SSH per Passwort im Normalfall nicht möglich sein. Stattdessen sollte sich immer über das Schlüsselpaar identifiziert werden. Dazu wird ein privater und ein öffentlicher Schlüssel generiert. Der öffentliche Schlüssel wird beim Zielserver in der Datei:
.ssh/authorized_keys
hinterlegt. Für die nötigen kryptografischen Operationen wird schließlich der private Schlüssel genutzt, welcher auf dem eigenen Rechner verbleibt. Normalerweise wird so nur ein Schlüsselpaar genutzt. Allerdings kann es durchaus vorkommen, das nicht nur ein Schlüssel, sondern mehrere unterschiedliche Schlüssel für die Verbindung zu unterschiedlichen Servern verwendet werden soll. Diese müssen dann auf dem eigenen Rechner vorgehalten werden. In diesem Fall muss der SSH-Client darüber informiert werden mit welchem Schlüssel die Anmeldung erfolgen soll. Normalerweise würde der Client wie folgt genutzt werden:
ssh
In diesem Fall würde der Standardschlüssel aus dem ~/.ssh/-Verzeichnis genutzt werden. Soll nun ein bestimmter Schlüssel genutzt werden so muss der Parameter -i angegeben werden:
ssh -i .ssh/otherkey
Damit kann der Schlüssel spezifiziert werden, welcher für die Verbindung genutzt werden soll. Eine andere Möglichkeit ist es für die einzelnen Server eine Konfiguration in der Datei ~/.ssh/config zu hinterlegen.
Host example.com IdentityFile ~/.ssh/id_rsa Host example.org IdentityFile ~/.ssh/otherkey
So können unterschiedliche Schlüssel für unterschiedliche Server genutzt werden.
Ich frag mich ja immer, warum Leute mehrere private keys auf einer Maschine für unterschiedliche Server nutzen wollen. Ich habe bisher nie einen Anwendungszweck dafür gefunden.
Sicherheitstechnisch ist die Idee ja pro CLIENT einen key zu benutzen, um dann auf Serverseite die Möglichkeit zu haben einzelne Personen auszusperren. So handhaben es auch sämtliche PKI-Systeme, die ich bisher gesehen habe.
Auf einem Rechner einen Key pro Server zu benuzten bringt einem sicherheitstechnisch keine Vorteile, allenfalls Chaos in der Schlüsselverwaltung.
@Matthias: Ein möglicher Fall wäre, dass man verschiedene Typen hat, also beispielsweise einen rsa-Schlüssel und einen ed25519, weil beispielsweise nicht alle Server schon ed25519 können.
@artemis: Das stimmt natürlich. :)