Istanza da SSH a Elastic Beanstalk


304

Mi sono appena registrato per la nuova offerta di Amazon Elastic Beanstalk. Quello che non riesco a capire è come SSH in un'istanza di Beanstalk. Non ho una chiave privata perché Beanstalk ha generato l'istanza per mio conto.


Quindi, una volta finalmente effettuato l'accesso, come posso accedere alla cartella in cui sto spingendo il mio repository git?
Evolve il

Sembra che le risposte sopra siano in qualche modo datate. Amazon ha una buona documentazione su come farlo ora. Segui i suggerimenti sopra riportati su come creare la coppia di chiavi. Quindi segui questo: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… Buona fortuna!
Jordan Michael Rushing,

4
Bene, se stai usando la nuova v3 di ELB CLI, puoi farloeb ssh
Sharoon Thomas,

Risposte:


491

Ho trovato che si trattava di un processo in 2 passaggi. Ciò presuppone che tu abbia già impostato una coppia di chiavi per accedere alle istanze EC2 nella regione interessata.

Configura gruppo di sicurezza

  1. Nella console AWS, apri la scheda EC2.
  2. Seleziona la regione interessata e fai clic su Gruppo sicurezza.
  3. Dovresti avere un elasticbeanstalk-defaultgruppo di sicurezza se hai lanciato un'istanza Elastic Beanstalk in quella regione.
  4. Modifica il gruppo di sicurezza per aggiungere una regola per l'accesso SSH. Quanto segue lo bloccherà per consentire l'ingresso solo da un indirizzo IP specifico.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Configura l'ambiente dell'applicazione Elastic Beanstalk

  1. Se non hai ancora creato una coppia di chiavi, creane una facendo clic su Coppie di chiavi sotto Gruppo di sicurezza nella scheda ec2.
  2. Nella console AWS, apri la scheda Elastic Beanstalk.
  3. Seleziona la regione rilevante.
  4. Seleziona l'ambiente pertinente
  5. Seleziona Configurazioni nel riquadro a sinistra.
  6. Seleziona Sicurezza.
  7. In "Coppia di chiavi EC2:", seleziona il nome della tua coppia di chiavi nel Existing Key Paircampo.

Una volta riavviato l'istanza, è necessario ottenere il nome host dalla scheda Istanze di AWS Console EC2 o tramite l'API. Dovresti quindi essere in grado di ssh sul server.

$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

Nota: per aggiungere una coppia di chiavi alla configurazione dell'ambiente, la protezione di terminazione delle istanze deve essere disattivata poiché Beanstalk tenterebbe di terminare le istanze correnti e avviare nuove istanze con KeyPair.

Nota: se qualcosa non funziona, controlla la scheda "Eventi" nell'applicazione / ambiente Beanstalk e scopri cosa è andato storto.


41
Questa risposta ha 2 voti in più rispetto a qualsiasi altra risposta; è tecnicamente rigoroso; ed estremamente chiaro. Cosa c'è che non va? Perché non è accettato?

6
Se viene visualizzato l'errore "Autorizzazione negata (chiave pubblica)" anche se sono state seguite le istruzioni precedenti, il seguente potrebbe spiegare il motivo: se la configurazione di EB avvia più di un'istanza EC2, è necessario verificare a quale di esse è associata la coppia di chiavi esso. Puoi solo SSH nell'istanza con la coppia di chiavi. È possibile controllare le proprietà nel menu dell'istanza EC2 per scoprirlo.
Per Quested Aronsson,

27
L'interfaccia potrebbe essere cambiata qui. Per me, i passaggi 4 e 5 nella seconda sezione erano leggermente diversi. Ho dovuto selezionare l'ambiente pertinente per aprire la sua dashboard, quindi selezionare "Configurazione" a sinistra. Fai clic sull'icona a forma di ingranaggio delle impostazioni accanto a "Istanze" che visualizza la pagina delle impostazioni del server. Sono stato in grado di selezionare una coppia di chiavi EC2 da un menu a discesa, che era conveniente. Grazie per l'ottima risposta, però!
Dallin,

12
Per il comando ssh dovrai specificare il file della chiave privata (.pem) e user_name @ public_dns_name (non la chiave pubblica, come la risposta implica dall'estensione .pub). Per Amazon Linux, il nome utente predefinito è ec2-user. Per RHEL5, il nome utente è spesso root ma potrebbe essere ec2-user. Per Ubuntu, il nome utente è ubuntu. Per SUSE Linux, il nome utente è root. Altrimenti, consultare il proprio provider AMI. (credit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc,

5
Questa impostazione è stata spostata nella scheda "Sicurezza" in "Configurazioni" (quindi nel passaggio 6, scegli "Sicurezza" anziché "Istanze")
delucasvb,

128

Elastic beanstalk CLI v3 ora supporta SSH diretto con il comando eb ssh. Per esempio

eb ssh your-environment-name

Non c'è bisogno di seccare la creazione di gruppi di sicurezza per scoprire l'indirizzo dell'istanza EC2.

C'è anche questo bel trucco:

eb ssh --force

Ciò forzerà temporaneamente l'apertura della porta 22 a 0.0.0.0 e la manterrà aperta fino a te exit. Questo unisce un po ' i vantaggi della risposta migliore, senza problemi. Puoi concedere temporaneamente a qualcuno diverso da te l'accesso per il debug e quant'altro. Ovviamente dovrai comunque caricare la loro chiave pubblica sull'host per avere accesso. Una volta che lo fai (e finché sei dentro eb ssh), l'altra persona può

ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

2
Ho appena installato CLI v3 da solo e funziona magnificamente. Solo per aggiungere, è possibile specificare l'ambiente aggiungendolo al comando, ad es eb ssh production. Puoi anche impostare un ambiente specifico con l'opzione di installazione:eb ssh production --setup
jmera

Hmmm no, questo richiede che tu abbia già la chiave privata nella tua directory ~ / .ssh. Alcune persone ce l'hanno, altre no. In caso contrario, è comunque necessario crearne e scaricarne uno e configurarlo in EB.
Jorge Orpinel,

49

La mia esperienza nell'agosto 2013 con un client Linux e una semplice installazione di AWS Beanstalk (singola istanza EC2) è la seguente (basata sul Wiki della community sopra)

Configura gruppo di sicurezza

  1. Nella console AWS, selezionare EC2 per accedere alla dashboard EC2
  2. Scopri il gruppo di sicurezza a cui appartiene la tua istanza EC2 facendo clic su Istanze nel riquadro di sinistra e quindi selezionando l'istanza a cui vuoi connetterti (nel mio caso esiste solo una - chiamata Ambiente predefinito). I dettagli sono mostrati alla base della pagina - Dovresti vedere un campo per i gruppi di sicurezza - prendi nota del nome - nel mio caso "awsweb ...".
  3. Dal pannello di sinistra selezionare Gruppi di sicurezza.
  4. Seleziona il awsweb...gruppo di sicurezza e i dettagli dovrebbero essere visualizzati alla base della pagina
  5. Seleziona la scheda Inbound e scegli SSH dal menu a discesa "Crea una nuova regola". Inserisci l'indirizzo IP / CIDR del tuo computer locale (dal quale intendi connetterti), ad esempio 192.168.0.12/32 e fai clic su Aggiungi regola e Applica modifiche regola.

Crea coppia di chiavi pubblica-privata

  1. Dalla dashboard EC2 selezionare Key Pairs dal riquadro di sinistra
  2. Fai clic su Key Pair (in alto) e inserisci un nome come myname-key-pair-myregion o qualsiasi altro nome chiave valido che desideri.
  3. Conferma e accetta il download della chiave privata dal browser salvandola, ad esempio, nella tua home directory o ovunque tu voglia. Assicurati che la directory abbia solo le autorizzazioni di scrittura per te.

Associare la coppia di chiavi private pubbliche al server Elastic Beanstalk EC2

  1. Per aggiungere una coppia di chiavi pubblica-privata a un'istanza di Elastic Beanstalk EC2 fai: Servizi -> Elastic Beanstalk -> La mia app -> Ambiente predefinito ti porta nell'ambiente predefinito (quello in cui carichi la tua app)
  2. Fai clic su Configurazione (sul pannello di sinistra) e quindi sull'ingranaggio / ingranaggio associato a "Istanze"
  3. Viene visualizzata una pagina intitolata "Server"
  4. Seleziona la tua chiave precompilata da EC2 Key Pair ed esegui il salvataggio
  5. Viene visualizzato un messaggio di avviso, quindi salvare di nuovo.

Connettersi all'istanza AWS EC2 tramite SSH

  1. In una sessione terminale passare alla directory contenente la chiave privata (file .pem).
  2. Se hai avuto alcuni tentativi in ​​questo caso, dovresti probabilmente fare qualcosa per .ssh / known_hosts se ne hai uno come rinominarlo. Altrimenti potresti ricevere un errore riguardo alla modifica dell'identità dell'host.
  3. Fare: ssh -i ./myname-key-pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

In bocca al lupo


3
Per il comando ssh dovrai specificare il file della chiave privata (.pem) e nome_utente @ nome_dn_pubblico. Per Amazon Linux, il nome utente predefinito è ec2-user. Per RHEL5, il nome utente è spesso root ma potrebbe essere ec2-user. Per Ubuntu, il nome utente è ubuntu. Per SUSE Linux, il nome utente è root. Altrimenti, consultare il proprio provider AMI. (credit: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc,

Questa domanda ha la migliore spiegazione per l'aggiunta della parte della coppia di chiavi. Ma mi è piaciuto usare eb-cli per fare la parte SSH in quanto è più semplice. Tuttavia, ho votato anche questo.
Nick,

35

Ho giocato anche con questo.

  1. vai alla scheda del servizio beanstalk elastico
  2. nella panoramica dell'applicazione vai all'azione -> modifica configurazione
  3. aggiungi il nome di una chiave come appare nella scheda EC2 (per la stessa regione) nella casella della coppia di chiavi esistente e premi applica modifiche

Il servizio verrà riavviato, quindi prepara un caffè per 5 minuti

Nella tua scheda ec2 per la stessa regione vedrai la tua nuova istanza in esecuzione. ssh al nome DNS pubblico come utente ec2 utilizzando la chiave aggiunta in 3 ad es. ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com


5
L'aggiunta della parte "ec2-user" era il mio problema ... Questo dovrebbe essere unito alla risposta sopra;).
Kirill Fuchs,

30

Esiste una pratica opzione "Connetti" nel menu "Azioni istanza" per l'istanza EC2. Ti darà l'esatto comando SSH da eseguire con l'URL corretto per l'istanza. Le istruzioni generali di Jabley sono corrette.


24

Le risposte sopra sono un po 'vecchie.

Innanzitutto crea una coppia di chiavi e poi collegala all'ambiente Elastic Beanstalk.

Passaggi per creare una coppia di chiavi

  1. Accedi ad AWS
  2. Servizi -> EC2
  3. A sinistra in RETE E SICUREZZA selezionare le coppie di tasti
  4. Seleziona Crea nuova coppia di chiavi, digita il nome della chiave e fai clic su Crea. La chiave verrà automaticamente scaricata sul tuo sistema.

Passaggi per collegare la coppia di chiavi creata all'ambiente Elastic Beanstalk

  1. AWS -> Servizi -> Elastic Beanstalk

  2. Seleziona il tuo ambiente e fai clic sulla configurazione a sinistra.

  3. Nella panoramica della configurazione selezionare modifica da Sicurezza.

  4. In Autorizzazioni macchina virtuale selezionare la coppia di chiavi che abbiamo creato.

  5. Fare clic su Salva e quindi su Salva configurazione.

Questo richiederà del tempo per riflettere sulla tua istanza EC2.



3

Devi connetterti all'istanza ec2 direttamente usando il suo indirizzo IP pubblico. Non è possibile connettersi utilizzando l'URL elasticbeanstalk.

È possibile trovare l'indirizzo IP dell'istanza cercandolo nella console ec2.

È inoltre necessario assicurarsi che la porta 22 sia aperta. Per impostazione predefinita, l'interfaccia della riga di comando di EB chiude la porta 22 dopo il completamento di una connessione ssh. È possibile chiamare eb ssh -o per mantenere la porta aperta al termine della sessione ssh.

Attenzione: dovresti sapere che il beanstalk elastico potrebbe sostituire la tua istanza in qualsiasi momento. Lo stato non è garantito in nessuna delle istanze di beanstalk elastiche. Probabilmente è meglio usare ssh solo a scopo di test e debugging, dato che tutto ciò che si modifica può andare via in qualsiasi momento.


2

La direzione per impostare la coppia di chiavi per un'istanza di ElasticBeanstalk ec2 con l'interfaccia utente corrente è: Avviso: questo richiederà un aggiornamento delle istanze EC2 nella tua app ElasticBeanstalk. Nota: prima di ciò dovrai aver creato una coppia di chiavi nella dashboard EC2.

1) In AWS Dashboard, selezionare il servizio ElasticBeanstalk 2) Selezionare l'applicazione che si desidera utilizzare. 3) Seleziona "Configurazione" 4) Seleziona l'icona a forma di ingranaggio (impostazioni) nella casella di configurazione "Istanze". 5) Verrà visualizzata una pagina denominata "Server", in cui è possibile aggiornare il campo a discesa "Coppia di chiavi EC2" con la coppia di chiavi desiderata e selezionare "Salva".

Una cosa da notare è che questo potrebbe non funzionare per le applicazioni con più istanze (ma credo che sia probabile che si trovino tutti nella stessa regione della coppia di chiavi).


1

Sono venuto qui alla ricerca di un modo per aggiungere una chiave a un'istanza creata da Beanstalk durante il provisioning (stiamo usando Terraform). Puoi fare quanto segue in Terraform:

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

È quindi possibile utilizzare quella chiave per SSH nella casella.


1

Se la CLI è stata configurata per l'utilizzo eb initnel proprio ambiente, dovrebbe essere semplice come

eb ssh --setup che ti permetterà di creare una nuova coppia di chiavi o di usarne una esistente se ne esiste una.

Potresti anche essere in grado di connetterti all'ambiente esistente eb useanche se non l'ho fatto.

Per dettagli sull'installazione della CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install


1

Su mac puoi installare il cli usando brew:

brew install awsebcli

Con lo strumento da riga di comando puoi quindi ssh con:

eb ssh environment-name

e anche fare altre operazioni. Questo presuppone che tu abbia aggiunto un gruppo di sicurezza che permette a ssh dal tuo IP.


0

A seconda della configurazione del proprio ambiente, è possibile che non si disponga di un indirizzo IP pubblico sull'istanza EC2 creata per il proprio ambiente. Puoi controllare tramite:

  1. Vai alla console EC2
  2. Trova la tua istanza e controlla la scheda Descrizione
  3. Se non esiste un IP pubblico ...
  4. Fai clic su IP elastici nella navigazione
  5. Fai clic su Assegna nuovo indirizzo
  6. Scegli Amazon per il pool
  7. Fai clic su Alloca

Infine, seleziona il tuo nuovo EIP e scegli Indirizzo associato dal menu azioni. Associa quell'IP alla tua istanza EC2. Dovresti essere in grado di connetterti usando eb sshora.

È possibile ripristinare i dettagli della connessione eseguendo eb ssh --setup.


-5

Ho anche incontrato lo stesso problema qualche tempo fa. Volevo usare il file chiave, ma Amazon dice da qualche parte che non è possibile aggiungere un file chiave a un server EC2 esistente. Per la prima applicazione di Beanstalk, Amazon preconfigura l'applicazione per te. Devi creare una nuova applicazione e puoi configurare il server EC2 che esegue l'app Beanstalk per usare un vecchio file pem (ppk se usi Putty), oppure puoi crearne uno nuovo. Ora dovresti essere in grado di SSH.

inserisci qui la descrizione dell'immagine

Quindi configura, quindi elimina la tua vecchia app.


3
Questo è sbagliato. È possibile aggiungere un file di chiavi a un'app beanstalk esistente. Si ucciderà / ricostruirà se stesso. Non è necessario eliminare / creare applicazioni da soli.
Nate
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.