Mehrere öffentliche Schlüssel für einen Benutzer

55

Diese Frage ähnelt der SSH-Authentifizierung mit öffentlichem Schlüssel. Kann ein öffentlicher Schlüssel für mehrere Benutzer verwendet werden? aber es ist umgekehrt.

Ich experimentiere mit ssh, damit jeder ssh-Server für Ihre Antworten funktioniert.

Kann ich mehrere öffentliche Schlüssel mit demselben Benutzer verknüpfen? Was sind die Vorteile davon? Können auch verschiedene Home-Verzeichnisse für verschiedene verwendete Schlüssel eingerichtet werden (alle mit demselben Benutzer verknüpft)?

Bitte lassen Sie mich wissen, wenn ich unklar bin.

Vielen Dank.

Russell
quelle

Antworten:

80

Sie können so viele Schlüssel haben, wie Sie möchten. Es hat sich bewährt, separate private / öffentliche Schlüsselsätze für verschiedene Bereiche zu verwenden, z. B. einen für den persönlichen Gebrauch, einen für die Arbeit usw.

Generieren Sie zunächst zwei separate Schlüsselpaare, eines für zu Hause und eines für die Arbeit:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

Fügen Sie als Nächstes einen Eintrag zu Ihrer ~/.ssh/configDatei hinzu, um den zu verwendenden Schlüssel basierend auf dem Server auszuwählen, zu dem Sie eine Verbindung herstellen:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

Hängen Sie als Nächstes den Inhalt von your id_rsa.work.pubinto ~/.ssh/authorized_keysan die Arbeitsmaschine an und tun Sie dasselbe für den Startschlüssel auf Ihrer Heimmaschine.

Wenn Sie dann eine Verbindung zum Heimserver herstellen, verwenden Sie einen der Schlüssel und den Arbeitsserver einen anderen.

Beachten Sie, dass Sie wahrscheinlich beide Schlüssel zu Ihrem hinzufügen möchten, ssh-agentdamit Sie Ihre Passphrase nicht die ganze Zeit eingeben müssen.

Phil Hollenback
quelle
Dies würde auch dann funktionieren, wenn id_rsa.work.pub und id_rsa.home.pub auf demselben Server installiert wären, oder? Der Grund dafür ist, dass ich möglicherweise von verschiedenen Computern aus eine Verbindung zu einem Server herstelle. Daher frage ich mich, ob es sinnvoll ist, für jeden Computer ein anderes Schlüsselpaar zu verwenden, auch wenn derselbe Benutzer eine Verbindung zum Server herstellt. Vielen Dank.
Russell
2
Absolut! Auf der Serverseite überprüft ssh alle öffentlichen Schlüssel in der Datei authorized_keys, bis eine Übereinstimmung gefunden wird. Sie können also problemlos alle Schlüssel in derselben authorized_keys-Datei auf dem Server ablegen.
Phil Hollenback
@PhilHollenback "ssh überprüft alle öffentlichen Schlüssel in der authorized_keys-Datei, bis eine Übereinstimmung gefunden wird" - Sie meinen, es werden so lange Anforderungen für jeden öffentlichen Schlüssel an den Client gesendet, bis der Client nachweist, dass er einen entschlüsseln kann? Haben Sie Referenzen dafür? (echt interessiert)
aaa90210
5

Es ist sehr sinnvoll, mehrere Benutzerschlüssel auf einen Benutzer zu legen. Häufige Gründe sind:

  • Sicherung
  • git (eg Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • gemeinsamer Zugriff auf eine App

Sofern Sie unterschiedliche Homedirs haben, können Sie diese pro Schlüssel ändern, indem Sie den Schlüssel von Benutzer1 environment="HOME=/home/user1"in der Datei authorized_keys voranstellen. Sehen man authorized_keys.

Probieren Sie es aus, YMMV.

MikeyB
quelle