Fügen Sie einem neuen Server mehrere SSH-Schlüssel hinzu

Fügen Sie einem neuen Server mehrere SSH-Schlüssel hinzu

Ich weiß, dass ich Folgendes tun kann, um einen SSH-Schlüssel zu kopieren

ssh-copy-id [email protected]

aber wenn ich einen neuen Server bereitstelle, muss ich mehrere SSH-Schlüssel dafür autorisieren.Gibt es eine Möglichkeit, die Autorisierung mehrerer SSH-Schlüssel zu vereinfachen?

Antwort1

Wenn man die Manpage von liest ssh-copy-id, scheint es, dass alle Schlüssel vom SSH-Agenten kopiert werden sollten, die für die Anmeldung nicht akzeptiert werden. Laden Sie also alle Schlüsselpaare in den SSH-Agenten ssh-addund verwenden Sie ihn ssh-copy-idanschließend.

Wenn das nicht funktioniert, können Sie versuchen, die Schlüssel für Folgendes anzugeben ssh-copy-id:

for i in ~/.ssh/*.pub; do
  ssh-copy-id -i $i user@host
done

Wenn das bei Ihnen immer noch nicht funktioniert, schauen Sie sich vielleicht etwas wie Ansible an:

# sshkeys.yml
---
- hosts: all
  remote_user: foo
  tasks:
  - authorized_key:
      user: foo
      key: '{{lookup("file", item)}}'
    with_items:
    - id_rsa.pub
    - id_rsa_alternate.pub

Verwenden Sie es wie folgt:

ansible-playbook -i remote.host.com, -k sshkeys.yml

Lesen Sie unbedingt mehr über Ansible, wenn Sie sich für diesen Weg entscheiden.

Antwort2

EINFÜHRUNG

Diese Methode ist SSH Copy ID um Längen überlegen, da Sie die Schlüssel für jeden Benutzer kopieren können, für einen SSH-Server mit jedem Port, nicht nur 22. Ach ja, und Sie können mehrere Schlüssel in Ihrer authorized_keys.org haben, die an die authorized_keys-Datei auf dem Server angehängt werden. Stellen Sie sicher, dass authorized_keys.org einen öffentlichen SSH-Schlüssel pro Zeile hat.

Es gibt viele Möglichkeiten, diese Zeilen nach Ihren Wünschen zu konstruieren. Ich schlage vor, diese cat | ssh catoder eine ähnliche echo | ssh ssh catMethode nie zu vergessen, da sie perfekt zum Schreiben auf Remote-Servern geeignet sind. cat SOMETHING | ssh SERVER "cat - > REMOTEFILE"Oder Sie können echo like verwenden, echo "SOMETHING" | ssh SERVER "cat - > REMOTEFILE" das sind perfekte Methoden, um etwas lokal einzulesen und es dann auf einem anderen Server zu schreiben oder anzuhängen. Schreiben Sie es so cat - > REMOTEFILEoder hängen Sie es so ancat - >> REMOTEFILE

DIE ANTWORTEN

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

oder

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

Auch wenn Sie den SSH-Schlüssel haben (einen SSH-Schlüssel):

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

oder

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

Das sollte ausreichen, um dem Ganzen einen Sinn zu geben.

MEHR INFO

HINWEIS: Lesen Sie meine Kommentare weiter unten dazu, dass Sie nicht auf die Verwendung von „root“ beschränkt sind. Hier können Sie sehen, dass alle Teile davon veränderbar sind:

[input of ssh keys or keys (as long as new line sepearted)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"

BONUS:Nehmen wir an, der SSH-Server lässt keine Kennwortanmeldungen zu und lässt nur SSH-Schlüssel zu, Sie möchten ihn jedoch über weitere Schlüssel informieren.

  • [input of ssh keys or keys (as long as new line sepearted)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
  • [Eingabe von SSH-Schlüsseln oder Schlüsseln (solange sie durch eine neue Zeile getrennt sind)]: Dies kann die Ausgabe einer Datei mit einem oder mehreren öffentlichen Schlüsseln sein, solange sie durch eine neue Zeile getrennt sind, oder ein Echo eines vollständigen öffentlichen Schlüssels (oder mehrerer öffentlicher Schlüssel, wiederum solange sie durch eine neue Zeile getrennt sind – Sie können „echo -e ‚line1\nline2‘“ verwenden, um neue Zeilen mit Echo zu trennen.)
  • PRIVAT: Wenn Ihr SSH-Server nur einen bestimmten Schlüssel zulässt, weil er nur die SSH-Schlüsselauthentifizierung konfiguriert hat und Ihren öffentlichen Schlüssel besitzt, geben Sie den privaten Schlüssel dieses öffentlichen Schlüssels an.
  • USER: der Benutzer, mit dem Sie sich verbinden möchten, und dessen Schlüssel bearbeiten. Wenn Sie sich als Root verbinden (Beispiel:[email geschützt]), können Sie zu den Schlüsseln von jedem hinzufügen: „cat - >> /home/anyuser/.ssh/authorized_keys“ oder zu den Root-Schlüsseln: „cat - >> /root/.ssh/autorized_keys“. Wenn Sie sich jedoch als Benutzer1 anmelden, können Sie nur die Schlüssel von Benutzer1 ändern: „cat - >> /home/user1/.ssh/authorized_keys“ oder einfacher „cat - >> ~/.ssh/authorized_keys“ (letzteres funktioniert für jeden Benutzer).
  • SERVER: der Server, mit dem Sie sich verbinden möchten. In diesem Fall ist es server.com
  • PORT: der akzeptierte SSH-Server-Port auf dem Server. Normalerweise ist es Port 22. Beachten Sie, dass Sie „-p 22“ weglassen können, wenn es Port 22 ist, da dies die Standardeinstellung ist.
  • AUTHORIZEDKEY: Dies ist der Speicherort der autorisierten Schlüssel. Ich habe dies im Punkt USER behandelt. Dies ist entweder „/root/.ssh/authorized_keys“ oder „/home/user1/.ssh/authorized_keys“ oder „~/.ssh/authorized_keys“.

verwandte Informationen