2011-10-30 7 views
13

He configurado una nueva instancia de EC2 en AWS y estoy intentando que FTP funcione para cargar mi aplicación. He instalado VSFTPD como estándar, así que no he cambiado nada en el archivo de configuración (/etc/vsftpd/vsftpd.conf).Cargando a EC2 problemas. ¿Cómo se hace FTP?

No he configurado mi puerto 21 en el grupo de seguridad, porque lo estoy haciendo a través de SSH. Ingreso en mi EC2 a través termal al igual que

sudo ssh -L 21:localhost:21 -vi my-key-pair [email protected]

abro FileZilla e iniciar sesión en host local. Todo va bien hasta que se trata de enumerar la estructura del directorio. Puedo abrir una sesión y derecha y todo parece estar bien como se puede ver a continuación:

Status: Resolving address of localhost
Status: Connecting to [::1]:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to EC2 FTP service.
Command: USER anonymous
Response: 331 Please specify the password.
Command: PASS ******
Response: 230 Login successful.
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/"
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: EPSV
Response: 229 Entering Extended Passive Mode (|||37302|).
Command: LIST
Error: Connection timed out
Error: Failed to retrieve directory listing

¿hay algo, que me falta en mi archivo de configuración. Una configuración que debe configurarse o desactivarse. Pensé que era genial que se conectara, pero cuando se agotó el tiempo pudiste imaginar mi cara. ¡Significó tiempo para comenzar a explorar la red y buscar la respuesta! Ahora sin suerte.

Estoy usando el estándar Amazon AMI 64 bit. Tengo una configuración de lámpara tradicional.

¿Alguien puede dirigirme en la dirección correcta? He leído mucho sobre cómo funciona esto, pero están incompletos, como si se aburrieran a medio escribir cómo hacerlo.

Me encantaría saber cómo lo hacen ustedes también. Si hace la vida más fácil. ¿Cómo cargas tus aplicaciones a una instancia de EC2? (Pasos por favor - ahorra mucho tiempo además es un gran recurso para otros.)

Respuesta

36

lo he descubierto, después de que la dirección de Antti ayuda Haapala.

Ni siquiera necesita la configuración de VSFTP en la instancia creada. Todo lo que tiene que hacer es asegurarse de que la configuración sea correcta en FileZilla.

Esto es lo que hice (estoy en un Mac por lo que debe ser similar en las ventanas):

  1. Abran Zilla archivo y vaya a Preferencias.
  2. Debajo de las preferencias, haga clic en sftp y agregue una nueva clave. Este es tu par de claves para tu instancia de ec2. Tendrá que convertirlo al formato que usa FileZilla. Se le dará un aviso para la conversión
  3. Click bien y volver al administrador del sitio
  4. En administrador del sitio entrar en su dirección pública EC2, esto también puede ser su IP elástica
  5. Asegúrese de que el protocolo se establece en SFTP
  6. Poner en el nombre de usuario del usuario EC2-
  7. Eliminar todo, desde el campo de contraseña - lo convierten en blanco
  8. todo hecho! Ahora conectate

Eso es lo que ahora puede atravesar su sistema EC2. Hay una trampa. Como ha iniciado sesión como usuario ec2 y no como root, no podrá modificar nada. Para evitar esto, cambie la propiedad del grupo del directorio donde se ubicará su aplicación (/ var/www/html) o lo que sea. Lo cambiaría así que está en un volumen EBS. ;) También asegúrese de que este grupo haya leído los permisos de escritura y ejecución. El grupo para el usuario ec2 es ec2-user. Deja a los demás como nada. Por lo que el comando se utiliza mientras está conectado a través de ssh

sudo chgrp ec2-user file/folder
sudo chmod 770 file/folder

Espero que esto ayude a alguien.

+0

Bueno, siempre puedes copiar la clave pública de .ssh/authorized_keys del ec2 para www-data, o lo que sea que se llame al usuario en tu distribución ... y conectarte directamente como el usuario de www. –

+0

Después de un día completo de búsqueda, esta respuesta finalmente lo hizo. Muchas gracias por publicar esto! – user1011713

+0

Esta es la mejor respuesta en esta página. Y el más detallado. ¡Digital High Five! – courtsimas

4

FTP es un protocolo muy problemático porque requiere un conducto secundario para la transferencia de datos real y definitivamente no funciona bien cuando se conecta. Con ssh debe usar SFTP que no tiene nada que ver con FTP pero es un protocolo completamente diferente.

Leer también en Wikipedia

+0

Así que estaba haciendo todo mal. Estaba tratando de usar FTP cuando debería haber estado haciendo SFTP. Gracias Antti Haapala! – Sententia

+3

No hay problema, vamos a matar al FTP :) –

0

¡Agregar la llave a www es una receta para el desastre! Cualquier problema menor con tu aplicación se convertirá en una pesadilla de seguridad.

Como alternativa a ftp, considere usar rsync o una estrategia de implementación más "madura" basada en capistrano, por ejemplo. Hay muchas herramientas para eso.

0

Los consejos de Antti Haapala son la única forma de evitar el EC2 SFTP. ¡Funciona bien! Solo tenga en cuenta que debe crear la carpeta /var/www/.ssh/ y copiar el archivo authorized_keys allí.

Después de eso, tendrá que cambiar la propiedad de autorizaciones_autorizadas a www-data para que la conexión ssh pueda reconocerlo. Amazon debería dejar que la gente lo sepa. Busqué esto en foros, preguntas frecuentes, etc. No tengo ni idea ... ¡Saludos una vez más a stackoverflow, el camino a seguir, jaja!

Cuestiones relacionadas