Wie organisiere ich SSH-Schlüssel?

Wie organisiere ich SSH-Schlüssel?

Ich habe in Debian mehrere SSH-Schlüssel für verschiedene Konten erstellt (nämlich Digital Ocean, GitHub und Bitbucket), aber es wird sehr schnell unübersichtlich.

Wenn ich den Inhalt meines .ssh-Ordners aufliste, erhalte ich:

digOcn digOcn.pub github github.pub id_rsa id_rsa.pub

(Ich verwende den id_rsaSchlüssel für Bitbucket.)

Ich mache das eval 'ssh-agent -s'Ding und „füge“ dann die Schlüssel wie folgt hinzu:

  • ssh-add ~/.ssh/github(und dann die Passphrase eingeben)

  • ssh-add ~/.ssh/id_rsa(und dann die Passphrase eingeben)

  • ssh-add ~/.ssh/digOcn(Wenn ich versuche hinzuzufügen digOcn, wird „Zugriff verweigert“ angezeigt. Ich versuche nicht, sudoetwas durcheinander zu bringen, und auch, weil die anderen Schlüssel kein erforderten sudo.)

Hier ist der verwirrende Teil: Die Leistung ssh-add -lbringt mir Folgendes:

2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/id_rsa (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 /home/USER/.ssh/github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 github (RSA)
2048 so:me:nu:mb:er:s0:an:d9:le:tt:er:s0 USER@COMPUTER_NAME (RSA)

Ja, ich habe in der Vergangenheit SSH-Schlüssel hinzugefügt, aber ich kann nicht nachvollziehen, was ich getan habe. Das ist wahrscheinlich der Grund, warum es beide gibt/home/USER/.ssh/github Und github.


Was habe ich falsch gemacht? Wie sollte ich meine SSH-Schlüssel organisieren?

Antwort1

Erstens ist es nicht falsch, für verschiedene Konten unterschiedliche Schlüssel zu verwenden. Für interaktive Shells ist das ziemlich übertrieben, aber es gibt legitime Gründe dafür, wenn Sie mit anderen, nicht interaktiven Diensten arbeiten. Vor einigen Jahren beispielsweise begann GitHub, stärkere SSH-Schlüssel zuzulassen, während Bitbucket noch eine Weile darauf bestand, schwächere zu verwenden. Die richtige Maßnahme bestand damals darin, für den Zugriff auf GitHub und Bitbucket unterschiedliche Schlüssel zu verwenden.

Ein weiteres Beispiel ist rsync. Wenn Sie rsyncbeispielsweise Dateien auf einem Webserver bereitstellen, benötigen Sie dafür wahrscheinlich dedizierte SSH-Schlüssel. Diese ermöglichen Ihnen, andere Berechtigungen festzulegen, als Sie normalerweise mit Ihrem interaktiven Konto verwenden würden.

Zurück zu Ihrer Frage zum Verwalten mehrerer Schlüssel: Mit SSH können Sie für verschiedene Ziele unterschiedliche Optionen festlegen. Dazu müssen Sie eine Datei ~/.ssh/configwie diese bearbeiten:

Host  bitbucket.org
    User                    hg
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/bitbucket

Host  github.com  gist.github.com
    User                    git
    IdentitiesOnly          yes
    IdentityFile            /home/user/.ssh/github

Die Datei ~/.ssh/configsollte die Berechtigung 0600 haben (ich weiß gerade nicht, ob das von SSH erzwungen wird oder nicht, aber es schadet sicherlich nicht).

Sie können denselben Mechanismus natürlich auch für interaktive Shells verwenden und Dinge wie den Remote-Benutzernamen (sofern dieser vom lokalen abweicht), den Remote-Port festlegen, den Hostnamen verkürzen usw. Beispiel:

Host  sm
    Hostname                sphygmomanometer.example.com
    User                    human
    Port                    2222

Dann kannst du einfach laufen

ssh sm

anstatt

ssh -p 2222 [email protected]

Auch Platzhalter sind erlaubt:

Host *
    ControlPath             ~/.ssh/ctl-%u-%r-%h-%p
    ControlMaster           auto
    ControlPersist          5m

Weitere Einzelheiten entnehmen Sie bitte dem Handbuch.

Nicht zuletzt:nicht"mach die eval 'ssh-agent -s'Sache". Entgegen der landläufigen Meinung hat das schwerwiegende Auswirkungen auf die Sicherheit. So geht man es richtig:

ssh-agent /bin/bash
ssh-add

(Geben Sie dann Ihre Schlüsselkennwörter ein, wenn Sie dazu aufgefordert werden.) Das ist alles. Machen Sie es nicht Schlüssel für Schlüssel oder auf andere Weise.

Dadurch wird eine neue Shell ausgeführt, in die Ihre Schlüssel geladen werden. Wenn Sie den Zugriff widerrufen möchten, verwenden Sie einfach exitdiese Shell. Wenn Sie „das eval 'ssh-agent -s'Ding machen“, werden die Authentifizierungsagenten noch lange nach Ihrer Abmeldung ausgeführt und können (und werden es irgendwann auch) für unbefugten Zugriff verwendet.

Bearbeiten:Versuchen Sie dieses kleine Experiment:

  1. eval $(ssh-agent -s)
  2. Abmelden oder das Terminal beenden
  3. Melden Sie sich erneut an oder öffnen Sie ein neues Terminal
  4. pgrep ssh-agent

Niemand löscht diese ssh-agents, sie bleiben bis zum nächsten im Umlauf rebootund können von der neuesten Schadsoftware ausgenutzt werden.

verwandte Informationen