Der OpenSSH-Client bietet die Möglichkeit mehrere Keys zu verwalten. Das ist nützlich, wenn man z.B. für unterschiedliche Server unterschiedliche Keys verwendet. Oder bei gitolite einen Key für Shell-Zugriff besitzt und einen für die git-Repositories selbst wobei nur letzterer auf den Command-Line-Wrapper gitolite-shell
gemappt ist.
Für diesen Zweck richtet man in der Datei ~/.ssh/config
zwei Hosts mit unterschiedlichen Keys (“Identities” genannt) ein:
Host hostgit Hostname git.example.com IdentityFile ~/.ssh/id_git Host hostshell Hostname git.example.com IdentityFile ~/.ssh/id_shell
Leider ist mit dieser Konfiguration alleine nicht sichergestellt, daß der angegebene Key verwendet wird. Es kann nach wie vor vorkommen, daß genau der falsche Key dem Server geschickt wird. Das liegt daran, daß der ssh-agent eine eigene Logik hat, welche Keys er auswählt und die IdentityFile – Angaben lediglich diese Keys der Liste der möglichen Keys hinzufügen.
Um nun wirklich die Auswahl auf den eingebeben Key einzuschränken, benötigt man die Einstellung IdentitiesOnly
– entweder host-spezifisch oder für alle Hosts. In letzterem Fall muß aber für jeden Host explizit ein Key angebenen sein:
Host hostgit Hostname git.example.com IdentityFile ~/.ssh/id_git IdentitiesOnly yes
Host * IdentitiesOnly yes