Instancia de SSH a Elastic Beanstalk

304

Me acabo de inscribir en la nueva oferta Elastic Beanstalk de Amazon. Lo que no puedo entender es cómo SSH a una instancia de Beanstalk. No tengo una clave privada porque Beanstalk generó la instancia en mi nombre.

Benno Waldmann
fuente
Entonces, una vez que finalmente inicie sesión, ¿cómo llego a la carpeta donde estoy empujando mi repositorio git?
Evoluciona el
Parece que las respuestas anteriores son algo anticuadas. Amazon tiene un buen documento sobre cómo hacerlo ahora. Siga las sugerencias anteriores sobre cómo crear el par de claves. Luego siga esto: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/… ¡ Buena suerte!
Jordan Michael Rushing
44
Bueno, si está utilizando la nueva v3 de ELB CLI, puede hacerloeb ssh
Sharoon Thomas el

Respuestas:

491

Me pareció un proceso de 2 pasos. Esto supone que ya ha configurado un par de claves para acceder a instancias EC2 en la región relevante.

Configurar grupo de seguridad

  1. En la consola de AWS, abra la pestaña EC2.
  2. Seleccione la región relevante y haga clic en Grupo de seguridad.
  3. Debe tener un elasticbeanstalk-defaultgrupo de seguridad si ha lanzado una instancia de Elastic Beanstalk en esa región.
  4. Edite el grupo de seguridad para agregar una regla para el acceso SSH. Lo siguiente lo bloqueará para permitir solo el ingreso desde una dirección IP específica.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Configure el entorno de su aplicación Elastic Beanstalk

  1. Si aún no ha creado un par de claves, haga uno haciendo clic en Pares de claves debajo de Grupo de seguridad en la pestaña ec2.
  2. En la consola de AWS, abra la pestaña Elastic Beanstalk.
  3. Seleccione la región relevante.
  4. Seleccionar entorno relevante
  5. Seleccione Configuraciones en el panel izquierdo.
  6. Seleccione Seguridad
  7. En "Par de claves EC2:", seleccione el nombre de su par de claves en el Existing Key Paircampo.

Una vez que se ha relanzado la instancia, debe obtener el nombre de host de la pestaña de instancias de AWS Console EC2 o mediante la API. Entonces debería poder ssh en el servidor.

$ ssh -i path/to/keypair.pub [email protected]

Nota: Para agregar un par de claves a la configuración del entorno, la protección de terminación de las instancias debe estar desactivada ya que Beanstalk intentaría terminar las instancias actuales e iniciar nuevas instancias con el KeyPair.

Nota: Si algo no funciona, revise la pestaña "Eventos" en la aplicación / entornos Beanstalk y descubra qué salió mal.

jabley
fuente
41
Esta respuesta tiene 2 veces más votos que cualquier otra respuesta; es técnicamente riguroso; y extremadamente claro. ¿Qué tiene de malo? ¿Por qué no se acepta?
66
Si recibe el error "Permiso denegado (clave pública)" aunque haya seguido las instrucciones anteriores, lo siguiente podría explicar por qué: Si su configuración de EB inicia más de una instancia EC2, debe verificar cuál de ellos obtiene el par de claves asociado con eso. Solo puede SSH a la instancia con el par de claves. Puede inspeccionar las propiedades en el menú de instancia EC2 para averiguarlo.
Por Quested Aronsson
27
La interfaz puede haber cambiado aquí. Para mí, los pasos 4 y 5 en la segunda sección fueron ligeramente diferentes. Tuve que seleccionar el entorno relevante para abrir su panel y luego seleccionar 'Configuración' a la izquierda. Haga clic en el ícono de ajustes de configuración junto a 'Instancias', que muestra la página de configuración del Servidor. Pude seleccionar un par de teclas EC2 de un menú desplegable, lo cual fue conveniente. ¡Gracias por la gran respuesta, sin embargo!
Dallin
12
Para el comando ssh, deberá especificar el archivo de clave privada (.pem) y el nombre de usuario @ public_dns_name (no la clave pública, como la respuesta implica por la extensión .pub). Para Amazon Linux, el nombre de usuario predeterminado es ec2-user. Para RHEL5, el nombre de usuario suele ser root pero puede ser ec2-user. Para Ubuntu, el nombre de usuario es ubuntu. Para SUSE Linux, el nombre de usuario es root. De lo contrario, consulte con su proveedor de AMI. (crédito: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
55
Esta configuración se ha movido a la pestaña "Seguridad" en "Configuraciones" (por lo tanto, en el paso 6, elija "Seguridad" en lugar de "Instancias")
delucasvb
128

Elastic beanstalk CLI v3 ahora admite SSH directo con el comando eb ssh. P.ej

eb ssh your-environment-name

No es necesario toda la molestia de configurar grupos de seguridad para encontrar la dirección de la instancia EC2.

También hay este truco genial:

eb ssh --force

Eso forzará temporalmente el puerto 22 abierto a 0.0.0.0, y lo mantendrá abierto hasta usted exit. Esto combina un poco de los beneficios de la respuesta principal, sin la molestia. Puede otorgar temporalmente a alguien que no sea usted acceso para la depuración y demás. Por supuesto, aún tendrá que cargar su clave pública al host para que tenga acceso. Una vez que haces eso (y mientras estés dentro eb ssh), la otra persona puede

ssh [email protected]
Tal
fuente
2
Acabo de instalar CLI v3 y funciona muy bien. Sólo para añadir, se puede especificar el entorno adjuntándola al comando, por ejemplo, eb ssh production. También puede configurar un entorno específico con la opción de configuración:eb ssh production --setup
jmera
Hmmm no, esto requiere que ya tenga la clave privada en su directorio ~ / .ssh. Algunas personas lo tienen, otras no. Si no lo hace, aún tiene que crear y descargar uno, y configurarlo en EB.
Jorge Orpinel
49

Mi experiencia en agosto de 2013 con un cliente de Linux y una instalación simple de AWS Beanstalk (instancia única de EC2) es la siguiente (según el Wiki de la comunidad anterior)

Configurar grupo de seguridad

  1. En la consola de AWS, seleccione EC2 para ir al Panel de control de EC2
  2. Descubra el grupo de seguridad al que pertenece su instancia EC2 haciendo clic en Instancias en el panel izquierdo y luego seleccionando la instancia a la que desea conectarse (en mi caso, solo hay una, denominada Entorno predeterminado). Los detalles se muestran en la base de la página. Debería ver un campo para Grupos de seguridad; anote el nombre, en mi caso "awsweb ...".
  3. En el panel izquierdo, seleccione Grupos de seguridad.
  4. Seleccione el awsweb...grupo de seguridad y los detalles deben aparecer en la base de la página
  5. Seleccione la pestaña Entrante y elija SSH en el menú desplegable "Crear una nueva regla". Inserte la dirección IP / CIDR de su máquina local (desde la cual desea conectarse), por ejemplo 192.168.0.12/32 y haga clic en Agregar regla y aplicar cambios de regla.

Crear par de claves pública-privada

  1. Desde el panel de control EC2, seleccione pares de claves en el panel izquierdo
  2. Haga clic en Par de claves (en la parte superior) e ingrese un nombre como myname-key-pair-myregion o cualquier nombre de clave válido que desee.
  3. Confirme y luego acepte la descarga de la clave privada desde el navegador guardándola, por ejemplo, en su directorio personal o donde desee. Asegúrese de que el directorio solo tenga permisos de escritura para usted.

Asociar el par de claves públicas privadas con el servidor Elastic Beanstalk EC2

  1. Para agregar un par de claves pública-privada a una instancia de Elastic Beanstalk EC2, haga lo siguiente: Servicios -> Elastic Beanstalk -> Mi aplicación -> El entorno predeterminado lo lleva al entorno predeterminado (en el que carga su aplicación)
  2. Haga clic en Configuración (en el panel izquierdo) y luego en el engranaje / engranaje asociado con "Instancias"
  3. Se muestra una página titulada "Servidor"
  4. Seleccione su par de claves preconstruidas del par de claves EC2 y guarde
  5. Aparece un mensaje de advertencia, así que guarde nuevamente.

Conéctese a la instancia de AWS EC2 con SSH

  1. En una sesión de terminal, cambie al directorio que contiene su clave privada (archivo .pem).
  2. Si ha tenido algunos pasos en esto, probablemente debería hacer algo sobre .ssh / known_hosts si tiene uno como cambiarle el nombre. De lo contrario, puede recibir un error acerca de que la identidad del host ha cambiado.
  3. Hacer: ssh -i ./myname-key-pair-my-region.pem [email protected]

Buena suerte

mikemay
fuente
3
Para el comando ssh, deberá especificar el archivo de clave privada (.pem) y el nombre de usuario @ public_dns_name. Para Amazon Linux, el nombre de usuario predeterminado es ec2-user. Para RHEL5, el nombre de usuario suele ser root pero puede ser ec2-user. Para Ubuntu, el nombre de usuario es ubuntu. Para SUSE Linux, el nombre de usuario es root. De lo contrario, consulte con su proveedor de AMI. (crédito: docs.aws.amazon.com/AWSEC2/latest/UserGuide/… )
yacc
Esta pregunta tiene la mejor explicación para agregar la parte del par de claves. Pero me gustó usar el eb-cli para hacer la parte SSH, ya que es más simple. Aún así, también voté por este.
Nick
35

He estado jugando con esto también.

  1. ir a la pestaña de servicio de frijoles elásticos
  2. en la vista general de su aplicación, vaya a acción -> editar configuración
  3. agregue el nombre de una clave tal como aparece en su pestaña EC2 (para la misma región) al cuadro de par de claves existente y presione aplicar cambios

El servicio se relanzará, así que prepara un café durante 5 minutos.

En su pestaña ec2 para la misma región, verá su nueva instancia en ejecución. ssh al nombre público de dns como usuario ec2 utilizando la clave agregada en 3, por ejemplo, ssh [email protected]

Ray Vahey
fuente
55
Agregar mi parte "ec2-user" fue mi problema ... Esto debería fusionarse con la respuesta anterior;).
Kirill Fuchs
30

Hay una práctica opción 'Conectar' en el menú 'Acciones de instancia' para la instancia EC2. Le dará el comando SSH exacto para ejecutar con la url correcta para la instancia. Las instrucciones generales de Jabley son correctas.

Peter
fuente
24

Las respuestas anteriores son un poco viejas.

Primero cree un par de claves y luego adjúntelo al entorno Elastic Beanstalk.

Pasos para crear un par de claves

  1. Inicie sesión en AWS
  2. Servicios -> EC2
  3. A la izquierda debajo de RED Y SEGURIDAD, seleccione pares de teclas
  4. Seleccione Crear nuevo par de claves, escriba el nombre de la clave y haga clic en crear. La clave se descargará automáticamente a su sistema.

Pasos para adjuntar el par de claves creado al entorno Elastic Beanstalk

  1. AWS -> Servicios -> Elastic Beanstalk

  2. Seleccione su entorno y haga clic en la configuración de la izquierda.

  3. En Descripción general de la configuración, seleccione modificar en Seguridad.

  4. En Permisos de máquina virtual, seleccione el par de claves que creamos.

  5. Haga clic en guardar y luego en guardar configuración.

Esto tomará un tiempo para reflejarse en su instancia EC2.

singh30
fuente
3

Debe conectarse a la instancia ec2 directamente utilizando su dirección IP pública. No puedes conectarte usando la URL de elasticbeanstalk.

Puede encontrar la dirección IP de la instancia buscándola en la consola ec2.

También debe asegurarse de que el puerto 22 esté abierto. De forma predeterminada, la CLI de EB cierra el puerto 22 después de que se completa una conexión ssh. Puede llamar a eb ssh -o para mantener el puerto abierto después de que se complete la sesión ssh.

Advertencia: debe saber que el beanstalk elástico podría reemplazar su instancia en cualquier momento. El estado no está garantizado en ninguna de sus instancias elásticas de beanstalk. Probablemente sea mejor usar ssh solo para fines de prueba y depuración, ya que todo lo que modifique puede desaparecer en cualquier momento.

Siddharth Sharma
fuente
2

La dirección para establecer el par de claves para una instancia de ElasticBeanstalk ec2 con la IU actual es: Advertencia: Esto requerirá una actualización de las instancias de EC2 en su aplicación ElasticBeanstalk. Nota: Antes de esto, deberá haber creado un par de claves en el panel de EC2.

1) En AWS Dashboard, seleccione el servicio ElasticBeanstalk 2) Seleccione la aplicación que desea usar. 3) Seleccione 'Configuración' 4) Seleccione el icono de engranaje (configuración) en el cuadro de configuración 'Instancias'. 5) Esto lo llevará a una página titulada 'Servidor', donde puede actualizar el campo desplegable 'Par de claves EC2' con su par de claves deseado y seleccionar 'Guardar'.

Una cosa a tener en cuenta es que esto puede no funcionar para aplicaciones con múltiples instancias (pero creo que es probable si todas están en la misma región que el par de claves).

adamjk
fuente
1

Vine aquí buscando una manera de agregar una clave a una instancia que Beanstalk crea durante el aprovisionamiento (estamos usando Terraform). Puede hacer lo siguiente en Terraform:

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

Luego puede usar esa clave para SSH en el cuadro.

Maikon
fuente
1

Si ha configurado la CLI utilizando eb initsu entorno, entonces debería ser tan simple como

eb ssh --setup que le permitirá crear un nuevo par de claves o usar uno existente si existe.

También puede conectarse con el entorno existente eb useaunque no lo haya hecho.

Para obtener detalles sobre la instalación de la CLI: https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

Andrew Waites
fuente
1

En mac puedes instalar el cli usando brew:

brew install awsebcli

Con la herramienta de línea de comandos, puede ssh con:

eb ssh environment-name

y también hacer otras operaciones. Esto supone que ha agregado un grupo de seguridad que permite ssh desde su ip.

FabricioG
fuente
0

Dependiendo de la configuración de su entorno, es posible que no tenga una dirección IP pública en la instancia EC2 que se creó para su entorno. Puedes consultar por:

  1. Ir a la consola EC2
  2. Encuentre su instancia y consulte la pestaña Descripción
  3. Si no hay IP pública ...
  4. Haga clic en IP elásticas en la navegación
  5. Haga clic en Asignar nueva dirección
  6. Elija Amazon para el grupo
  7. Haga clic en Asignar

Finalmente, seleccione su nuevo EIP y elija Asociar dirección en el menú de acciones. Asocia esa IP con tu instancia EC2. Deberías poder conectarte usandoeb ssh ahora.

Puede restablecer los detalles de la conexión ejecutando eb ssh --setup.

Matthew Carriere
fuente
-5

También me encontré con el mismo problema hace un tiempo. Quería usar el archivo de clave, pero Amazon dice en alguna parte que no puede agregar un archivo de clave a un servidor EC2 existente. Para la primera aplicación Beanstalk, Amazon preconfigura la aplicación por usted. Debe crear una nueva aplicación, y puede configurar el servidor EC2 que ejecuta la aplicación Beanstalk para usar un archivo pem antiguo (ppk si usa Putty), o puede crear uno nuevo. Ahora deberías poder usar SSH.

ingrese la descripción de la imagen aquí

Luego configure, luego elimine su aplicación anterior.

ashraj98
fuente
3
Esto está mal. PUEDE agregar un archivo de claves a una aplicación de beanstalk existente. Se matará / reconstruirá a sí mismo. No necesita eliminar / crear aplicaciones usted mismo.
Nate