EC2: Mehrere SSH-Schlüssel für eine Instanz?

12

Ist es möglich, mehr als einen privaten Schlüssel für SSH in einer EC2-Instanz zu erstellen? Was ist die allgemeine Best Practice dafür? Wir haben mehrere Benutzer, die SSH auf den Servern benötigen, und die Verteilung eines Schlüssels funktioniert einfach nicht gut. Dies ermöglicht es uns nicht, Benutzer von SSH auf dem Server zu entfernen, es sei denn, wir ändern den Schlüssel und verteilen ihn neu.

einfallsreich
quelle
Wenn Sie die SSH-Schlüsselverwaltung für ein Team durchführen, ist es wahrscheinlich am besten, sich ein spezielles Tool wie Userify oder SSH UKM anzusehen (Haftungsausschluss: Ich arbeite für Userify).
Jamieson Becker

Antworten:

5

Absolut; Sie platzieren einfach alle relevanten öffentlichen Schlüssel im Bild und Sie sollten sofort loslegen. Ich bevorzuge die Verwendung eines Konfigurationsverwaltungssystems zur Verwaltung von SSH-Schlüsseln. Auf diese Weise ist es ziemlich trivial, den Zugriff eines Benutzers auch auf laufenden Systemen zu widerrufen. Es gibt auch weitaus mehr ... sagen wir "einfallsreiche" ... Möglichkeiten, dies zu handhaben, z. B. das Speichern aller Ihrer SSH-Schlüssel in LDAP, die SSH-Schlüssel wie alle anderen Anmeldeinformationen zentralisieren.

womble
quelle
2
Wenn Sie SSH-Schlüssel in LDAP speichern möchten, sollten Sie sich mit Kerberos vertraut machen.
84104
1
Ich habe Kerberos bereitgestellt. Ich persönlich denke, es ist eine Lösung auf der Suche nach einem Problem und eine ziemlich knifflige und nervige Lösung.
Womble
2
@Ash: Fragen gehen in Fragen, nicht in Kommentare.
Womble
1
Ich wollte den obigen Kommentar ignorieren - aber für jeden, der neu auf der Website ist, sollte ich klarstellen, dass wenn Sie einen Kommentar haben, der sich auf die Umsetzung der gegebenen Antwort, Klarstellungen oder Missverständnisse bezieht, dies klargestellt werden sollte in den Kommentaren, damit das OP Änderungen an der Antwort vornehmen kann, um eventuelle Verwirrungen zu klären.
Mazatec
2
Nein, Sie sollten in Kommentaren klärende Fragen stellen, wenn die Antwort die ursprünglich gestellte Frage nicht beantwortet. Wenn Sie eine neue Frage basierend auf dem Inhalt einer Antwort stellen möchten, sollten Sie die große Schaltfläche "Frage stellen" in der oberen rechten Ecke der Seite verwenden, um eine neue Frage zu stellen. Dies ist eine Q & A-Site, kein Diskussionsforum.
Womble
6

Sie können auch Standard-SSH-Mechanismen verwenden. Der beste Ansatz wäre, wenn der Benutzer auf seinem Computer ausgeführt wird ssh-keygen, um sein Schlüsselpaar zu generieren. Dann senden sie Ihnen ~/.ssh/id_rsa.pub(oder id_dsa.pub, je nach gewähltem Algorithmus) und Sie fügen den Inhalt .ssh/authorized_keysdem Zielhost im Home-Verzeichnis des Benutzerkontos hinzu, auf das sie zugreifen sollen. Die Datei kann mehr als einen Schlüssel enthalten. Eine pro Zeile. Und das ist alles! Der gleiche öffentliche Schlüssel (id_rsa.pub) kann auf einer beliebigen Anzahl von Hosts verwendet werden - er identifiziert immer den Benutzer.

Sie können es auch andersherum tun - Sie führen den ssh-keygen aus und senden ~ / .ssh / id_rsa (oder id_dsa) an den Benutzer. Und der Benutzer speichert die Datei in ~ / .ssh / id_rsa. Denken Sie nur daran, die Berechtigungen auf 600 (-rw -------) dieser Datei zu ändern, da ssh sie sonst nicht akzeptiert. Dies ist offensichtlich weniger sicher, da der private Schlüssel wahrscheinlich über E-Mail verteilt wird.

Dies kann auch in PuTTY mit PuTTYgen erfolgen.

oker
quelle
1

Ein einfacher Weg ist wie unten gezeigt.

Für Linux / Mac-Benutzer:

  1. Verwenden Sie den folgenden Befehl, um öffentliche und private Schlüssel zu erstellen: $ ssh-keygen -t rsa -b 4096

  2. Laden Sie den öffentlichen Schlüssel in einen Ordner in Ihrem S3-Bucket hoch. Zum Beispiel: S3> MyBucket> Schlüsselpaar

  3. Speichern und sichern Sie Ihren privaten Schlüssel.

Für Windows-Benutzer:

  1. Verwenden Sie puttygen, um die Schlüssel zu generieren.
  2. Folgen Sie DigitalOcean , um SSH-Schlüssel zu erstellen.
  3. Laden Sie den öffentlichen Schlüssel zu S3> MyBucket> Keypair hoch
  4. Speichern und sichern Sie Ihren privaten Schlüssel.

Die folgenden Schritte sind beim Start eines Linux AMI wichtig.

  1. Stellen Sie sicher, dass für die IAM-Rolle eine Rolle mit der AmazonS3FullAccess-Richtlinie erstellt wurde. Dadurch kann die Instanz eine Rolle für den Zugriff auf die S3-Buckets übernehmen. Dies ist erforderlich, um die öffentlichen Schlüssel aus S3 zu lesen und in das Benutzerprofil zu kopieren

  2. Fügen Sie im Abschnitt Benutzerdaten unter Instanzdetails konfigurieren> Erweiterte Details (als Text) den folgenden Code hinzu:

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

Dieses Setup erstellt User1 und User2 und fügt sie sudo - Benutzer. Der Befehl aws s3 cp kopiert die öffentlichen Schlüssel des Benutzers aus dem S3-Ordner in seinen .ssh/authorized_keys path. Der letzte Abschnitt besteht darin, Befehle als Administrator auszuführen, ohne Kennwörter zu benötigen.

Es gibt viele Sicherheitsverbesserungen, die hier empfohlen werden können. Obwohl dies in diesem Beispiel nicht explizit verwendet wird, können nur wenige Dinge hervorgehoben werden, wenn der S3-Bucket-Zugriff auf einen bestimmten Bucket beschränkt wird und die Sicherheitsauswirkungen der Deaktivierung der Kennwortverwendung in sudo bekannt sind. Verwenden Sie sie mit Bedacht auf Ihre speziellen Bedürfnisse.

Vijay Shreenivos
quelle