Mehrere private SSH-Schlüssel für denselben Host

10

Wie kann ich 2 verschiedene private SSH-Schlüssel für denselben Host speichern? Ich habe 2 Einträge in / etc / ssh / ssh_config für denselben Host mit den verschiedenen Schlüsseln versucht, und ich habe auch versucht, beide Schlüssel in derselben Datei abzulegen und von einer Host-Einstellung aus darauf zu verweisen, aber beide funktionieren nicht.

Weitere Details: Ich verwende den Ubuntu-Server (12.04) und möchte über SSH eine Verbindung zu GitHub herstellen, um die neueste Quelle für meine Projekte herunterzuladen. Es werden mehrere Projekte auf demselben Server ausgeführt, und jedes Projekt verfügt über ein GitHub-Repo mit einem eigenen Deloyment-Schlüsselpaar . Der Host ist also immer der gleiche ( github.com), aber die Schlüssel müssen unterschiedlich sein, je nachdem, welches Repo ich verwende.

Verschiedene /etc/ssh/ssh_configVersionen habe ich ausprobiert:

Host github.com
    IdentityFile /etc/ssh/my_project_1_github_deploy_key
    StrictHostKeyChecking no
Host github.com
    IdentityFile /etc/ssh/my_project_2_github_deploy_key
    StrictHostKeyChecking no

und dies mit beiden Schlüsseln in derselben Datei:

Host github.com
    IdentityFile /etc/ssh/my_project_github_deploy_keys
    StrictHostKeyChecking no

Ich hatte auch kein Glück damit. Jede Hilfe wäre sehr dankbar!

Sencha
quelle

Antworten:

6

Ich würde es so machen:

Host project_1
    HostName github.com
    IdentityFile /etc/ssh/my_project_1_github_deploy_key

Host project_2
    HostName github.com
    IdentityFile /etc/ssh/my_project_2_github_deploy_key

Verwenden Sie dann project_1 oder project_2 als Host, um auf das Repository zuzugreifen.

Schwindler
quelle
1
Das Deaktivieren der Überprüfung von Hostschlüsseln ist eine schreckliche Idee (sicherheitstechnisch) und steht in keinem Zusammenhang mit der von Ihnen vorgeschlagenen Lösung. Davon abgesehen ist es eine gute Antwort.
Gertvdijk
1
@gertvdijk du bist natürlich richtig, habe meine antwort bearbeitet.
Fälscher
Ich habe die strikte Überprüfung des Hostschlüssels selbst deaktiviert, da meine Skripte automatisiert sind und die Eingabeaufforderungen vermieden werden, die beim ersten Herstellen einer Verbindung auftreten. Können Sie eine sicherere Alternative @gertvdijk empfehlen?
Sencha
@Sencha fügt den Host-Schlüssel der Datei "unknown_hosts" hinzu. Diese Datei kann auch über " UserKnownHostsFilessh_config
faker" vom
1
Ich habe total übersehen, dass es schon in der Frage war. Es tut uns leid. Vielleicht können wir dies in einer anderen Frage diskutieren.
Gertvdijk
5

Sie können mehrere Identitätsdateien bereitstellen, die SSH nacheinander versucht, bis eine funktioniert oder alle fehlschlagen.

Host github.com
    IdentityFile /etc/ssh/my_project_1_github_deploy_key
    IdentityFile /etc/ssh/my_project_2_github_deploy_key
    StrictHostKeyChecking no
ceejayoz
quelle
2
MaxAuthTries darf auf der Serverseite nicht zu niedrig eingestellt werden (der Standardwert ist 6, sodass Probleme wahrscheinlich auftreten, wenn Sie my_project_6 erreichen).
Ich habe es gerade versucht, aber es funktioniert nicht. Was auch immer die erste Identifizierungsdatei ist, funktioniert, aber wenn versucht wird, eine Verbindung mit einer der zusätzlichen Identitäten herzustellen, schlägt dies fehl.
Sencha
1
@Sencha Bitte geben Sie beim Anschließen die entsprechende Ausgabe an ssh -vvv. Relevant wie, welche Schlüssel angeboten werden und warum sie abgelehnt werden.
Gertvdijk
1
@Sencha Git verwendet nur den SSH-Client unter Wasser. Deshalb schlage ich vor, dass Sie sich sshselbst ausführen, um zu überprüfen, an welchem ​​Punkt dies fehlschlägt.
Gertvdijk
1
Ich finde diese Antwort besser, als eine benutzerdefinierte URL verwenden zu müssen.
Adrian