2011-10-30 13 views
13

Ho installato una nuova istanza EC2 su AWS e sto cercando di far funzionare FTP per caricare la mia applicazione. Ho installato VSFTPD come standard, quindi non ho cambiato nulla nel file di configurazione (/etc/vsftpd/vsftpd.conf).Caricamento in caso di problemi EC2. Come si fa FTP?

Non ho impostato la mia porta 21 nel gruppo di sicurezza, perché lo sto facendo tramite SSH. Accedo al mio EC2 attraverso termal in questo modo

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

apro FileZilla e accedere host locale. Tutto va bene fino ad elencare la struttura delle directory. Posso accedere e giusto e tutto sembra bene come potete vedere qui sotto:

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

c'è qualcosa che mi manca nel mio file di configurazione. Un'impostazione che deve essere impostata o disattivata. Ho pensato che fosse bello che fosse connesso, ma quando è scaduto potresti immaginare la mia faccia. Significava il tempo di iniziare a trascinare la rete per provare e trovare la risposta! Ora senza fortuna.

Sto usando lo standard AMI AMAM 64 bit. Ho una configurazione tradizionale della lampada.

Qualcuno può orientarmi nella giusta direzione? Ho letto molto su come farlo funzionare, ma sono tutti incompleti, come se si fossero annoiati a metà strada a digitare come farlo.

Mi piacerebbe sapere come lo fate anche voi ragazzi. Se rende la vita più facile. Come carichi le tue app su un'istanza EC2? (Passaggi per favore - risparmia molto tempo in più è un'ottima risorsa per gli altri.)

risposta

36

ho capito, dopo l'aiuto regia di Antti Haapala.

Non è nemmeno necessario configurare VSFTP nell'istanza creata. Tutto quello che devi fare è assicurarti che le impostazioni siano corrette in FileZilla.

Questo è quello che ho fatto (io sono su un Mac e quindi dovrebbe essere simile a Windows):

  1. Aprite il file di Zilla e andare in Preferenze.
  2. Nelle preferenze fare clic su sftp e aggiungere una nuova chiave. Questa è la tua coppia di chiavi per l'istanza di ec2. Dovrai convertirlo nel formato utilizzato da FileZilla. Essa vi darà un prompt per la conversione
  3. Clicca bene e tornare al gestore del sito
  4. in Site Manager inserire il tuo indirizzo pubblico EC2, questo può anche essere il vostro IP elastica
  5. Assicurarsi che il protocollo è impostato su SFTP
  6. Mettere il nome utente di EC2-user
  7. Togliere tutto dal campo password - rendono vuoto
  8. tutto fatto! Adesso collegati.

Ecco, ora puoi attraversare il tuo sistema EC2. C'è un problema. Perché sei loggato come ec2-user e non root non sarai in grado di modificare nulla. Per ovviare a questo, cambia la proprietà del gruppo nella directory in cui si troverà la tua applicazione (/ var/www/html) o cosa mai. Lo cambierei quindi è su un volume EBS. ;) Assicurarsi inoltre che questo gruppo abbia letto le autorizzazioni di scrittura ed esecuzione. Il gruppo per ec2-user è ec2-user. Lascia tutti gli altri come niente. Quindi il comando di utilizzare mentre si è connessi tramite ssh

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

Spero che questo aiuti qualcuno.

+0

Bene, puoi sempre copiare la chiave pubblica da .ssh/authorized_keys di ec2-user per i dati www, o qualunque sia l'utente chiamato nella tua distribuzione ... e connetterti direttamente come utente www. –

+0

Dopo un'intera giornata di ricerche, questa risposta ha finalmente funzionato. Grazie mille per aver postato questo! – user1011713

+0

Questa è la migliore risposta in questa pagina. E il più dettagliato. Digital high five! – courtsimas

4

FTP è un protocollo molto fastidioso perché richiede un tubo secondario per il trasferimento dati effettivo e non funziona sicuramente bene durante il piping. Con ssh dovresti usare SFTP che non ha nulla a che fare con FTP ma è un protocollo completamente diverso.

Leggi anche sul Wikipedia

+0

Quindi stavo andando tutto sbagliato. Stavo cercando di usare FTP quando avrei dovuto fare SFTP. Grazie Antti Haapala! – Sententia

+3

Nessun problema, uccidiamo l'FTP :) –

0

Aggiungere la chiave a www è una ricetta per il disastro! Qualsiasi problema minore con la tua app diventerà un incubo per la sicurezza.

In alternativa a ftp, è consigliabile utilizzare rsync o una strategia di distribuzione più "matura" basata su capistrano, ad esempio. Ci sono molti strumenti per questo intorno.

0

I suggerimenti di Antti Haapala sono l'unico modo per aggirare l'SFTP EC2. Funziona bene! Basta notare che è necessario creare la cartella /var/www/.ssh/ e copiare il file authorized_keys lì.

Dopodiché sarà necessario modificare la proprietà authorized_keys su www-data in modo che la connessione ssh possa riconoscerla. Amazon dovrebbe farlo sapere alla gente. Ho cercato questo in forum, domande frequenti, ecc. Nessun indizio ... Applausi ancora una volta a StackOverflow, il modo di andare haha!