Wie Sie mehrere Schlüssel für elastic beanstalk-Instanz?
Es ist eine sehr gute Frage, auf [How to] SSH mit Elastischen [ein] Beanstalk Instanz, aber eine Sache habe ich bemerkt ist, dass durch diese Methode ist es nur möglich, fügen Sie eine SSH-Schlüssel.
Wie kann ich mehrere SSH-Schlüssel, um eine Instanz? Gibt es eine Möglichkeit zum automatischen hinzufügen von mehreren Schlüsseln für neue Instanzen?
- Meine Antwort weiter unten erklärt, wie man diese dynamisch: stackoverflow.com/a/46269015/4245294
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Elastic Beanstalk unterstützt nur einen einzelnen key pair. Sie können manuell hinzufügen, SSH-Schlüssel, um die
authorized_keys
Datei, aber diese wird nicht bekannt sein, um die Elastic Beanstalk-tools.Erstellen Sie eine Datei namens
.ebextensions/authorized_keys.config
ist ein weiterer Weg, es zu tun.Den Namen der Datei
authorized_keys.config
ist willkürlich.eb ssh
in die Instanz, und geben Siecat ~ec2-user/.ssh/authorized_keys
authorized_keys
.Kombination rhunwicks und rch850 die Antworten, hier ist eine saubere Art und Weise, um zusätzliche SSH-Schlüssel, wobei der eine Satz über die AWS-Konsole:
Beachten Sie, dass
eb ssh
funktioniert nur, wenn der private Schlüssel-Datei hat den gleichen Namen wie der private Schlüssel definiert, die in der AWS-Konsole.Folgenden auf von Jim Flanagan ' s Antwort, Sie könnte den Schlüssel Hinzugefügt, um jede Instanz durch die Schaffung
.ebextensions/app.config
in Ihrer Anwendung Quellcode-Verzeichnis mit dem Inhalt:command: sort -u /home/ec2-user/.ssh/authorized_keys -o /home/ec2-user/.ssh/authorized_keys
Einen Weg, Sie können dies erreichen, ist das erstellen einer Benutzer-Daten-script, das fügt den öffentlichen Schlüssel der zusätzliche Schlüssel-Paare, die Sie verwenden möchten, um ~ec2-user/.ssh/authorized_keys, und starten Sie die Instanz mit, dass die Daten des Nutzers, zum Beispiel:
.ebextensions/app.config
im source-tree für die version der Anwendung bereitgestellt wird, um weitere Befehle hinzuzufügen. Siehe docs.aws.amazon.com/elasticbeanstalk/latest/dg/...Die dynamischste Art, bis zu mehrere SSH-Schlüssel auf Elastic Beanstalk EC2-Instanzen
Schritt 1
Erstellen Sie eine Gruppe IAM. Nennen Sie so etwas wie
beanstalk-access
. Fügen Sie die Benutzer SSH-Zugriff auf diese Gruppe IAM. Auch fügen Sie Ihren öffentlichen ssh-Schlüssel(s) zu Ihrem IAM -Security credentials
.Schritt 2
Den deployment-Skript unten wird das Parsen der JSON-Daten von AWS CLI mit einem handlichen Linux-tool namens
jq
(jq offizielle tutorial), so müssen wir hinzufügen, es in .ebextensions:Schritt 3
Fügen Sie den folgenden BASH-deployment-Skript .ebextensions:
Leider, denn dies ist YAML, können Sie nicht Einrücken der code, damit es leichter lesbar. Aber lassen Sie uns brechen, was passiert:
(In der code-snippet direkt unten) Wir entfernen die Standard-SSH-key-Datei zu geben, die volle Kontrolle über die Liste, um das deployment-Skript.
(In der code-snippet direkt unten), die Mit AWS CLI, wir bekommen die Liste der Benutzer in der
beanstalk-access
Gruppe, und dann sind wir Rohrleitungen, die JSON-Liste injq
zu extrahieren nur, dass die Liste der `$Benutzer.(In der code-snippet direkt unten) Hier sind wir der Umwandlung von JSON
$users
Liste in einem BASH-array und ruft es$users_array
.readarray -t users_array < <(jq -r '.[]' <<<"$Benutzer")
declare -p users_array
(In der code-snippet direkt darunter) beginnen Wir die Schleife durch das array von Benutzern.
(In der code-snippet direkt darunter) kann Dies wahrscheinlich gemacht werden in einer Zeile, aber es ' s grabbing die Liste der SSH-Schlüssel für jeden Benutzer in der
beanstalk-access
Gruppe. Es hat noch nicht verwandelte Sie in eine BASH-array, es ist immer noch eine JSON-Liste.(In der code-snippet direkt unten), Jetzt ist es der Umwandlung von JSON-Liste für jeden Nutzer SSH-keys in einem BASH-array.
(In der code-snippet direkt unten), Jetzt ist es der Umwandlung von JSON-Liste in einem BASH-array.
(In der code-snippet direkt unten) Jetzt haben wir eine Schleife durch jedes Benutzers Reihe von SSH-Schlüsseln.
(In der code-snippet direkt unten) fügen Wir jeder SSH-Schlüssel für jeden Benutzer, der
authorized_keys
Datei.(In der code-snippet direkt darunter) Schließen beide die
$users_array
Schleife und$users_keys
Schleife.(In der code-snippet direkt darunter) Geben die
authorized_keys
Datei die gleichen Berechtigungen, die es ursprünglich hatte.Schritt 4
Wenn Ihr Elastic Beanstalk EC2-Instanz in einer öffentlichen Subnetz, können Sie auch einfach ssh in Sie es mit:
ssh ec2-user@ip-address -i /path/to/private/key
Wenn Ihr Elastic Beanstalk EC2-Instanz in ein eigenes Subnetz (wie es sein sollte für cloud security best practices), dann werden Sie brauchen, um eine "bastion server" EC2-Instanz, die als gateway für die Tunnelung alle SSH-Zugriff auf EC2-Instanzen. Nachschlagen
ssh agent forwarding
oderssh proxy commands
um eine Idee zu bekommen, wie das zu erreichen SSH-tunneling.Hinzufügen neuer Benutzer
Alles, was Sie tun ist, fügen Sie Sie zu Ihrem IAM -
beanstalk-access
Gruppe, und führen Sie eine Bereitstellung aus, und das Skript hinzufügen, um Ihr Elastic Beanstalk-Instanzen.beanstalk-access
? Dann auch sicherstellen, dass Benutzer dieser Gruppe zugewiesen.https://stackoverflow.com/a/16776129/7459377
ist die einfachste Methode - wie @rhunwicks aber mit einem ">" - symbol auf der ersten Kopie:
Grüße.
share button
neben eurer neuen Antwort.anstatt
echo
und Ihre Schlüssel zu speichern, die auf Git-laden Sie Ihren öffentlichen Schlüssel an IAM-Benutzer auf AWS und als: