Configurazione FTP su Amazon Cloud Server [chiuso]


257

Sto cercando di configurare FTP su Amazon Cloud Server, ma senza fortuna. Cerco su rete e non ci sono passaggi concreti su come farlo.

Ho trovato quei comandi da eseguire:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

Ma non so dove scriverli.


10
Questa domanda dovrebbe essere migrata su serverfault.com.
Jérôme Verstrynge,

Risposte:


570

Jaminto ha fatto un ottimo lavoro nel rispondere alla domanda, ma di recente ho seguito personalmente il processo e volevo ampliare la risposta di Jaminto.

Suppongo che tu abbia già creato un'istanza EC2 e abbia associato un indirizzo IP elastico.


Passaggio 1: installare vsftpd

SSH sul tuo server EC2. Genere:

> sudo yum install vsftpd

Questo dovrebbe installare vsftpd.

Passaggio 2: aprire le porte FTP sull'istanza EC2

Successivamente, dovrai aprire le porte FTP sul tuo server EC2. Accedi alla Console di gestione AWS EC2 e seleziona Gruppi di sicurezza dall'albero di navigazione a sinistra. Seleziona il gruppo di sicurezza assegnato all'istanza EC2. Quindi selezionare la scheda In entrata, quindi fare clic su Modifica:

inserisci qui la descrizione dell'immagine

Aggiungi due regole TCP personalizzate con intervalli di porte 20-21 e 1024-1048. Per Sorgente, puoi selezionare "Ovunque". Se decidi di impostare Source sul tuo indirizzo IP, tieni presente che il tuo indirizzo IP potrebbe cambiare se viene assegnato tramite DHCP.

inserisci qui la descrizione dell'immagine



Passaggio 3: apportare aggiornamenti al file vsftpd.conf

Modifica il tuo file conf vsftpd digitando:

> sudo vi /etc/vsftpd/vsftpd.conf

Disabilita FTP anonimo modificando questa riga:

anonymous_enable=YES

per

anonymous_enable=NO

Quindi aggiungere le seguenti righe nella parte inferiore del file vsftpd.conf:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance> 

Il tuo file vsftpd.conf dovrebbe essere simile al seguente - tranne assicurati di sostituire pasv_address con il tuo indirizzo IP pubblico:

inserisci qui la descrizione dell'immagine

Per salvare le modifiche, premi Esc, quindi digita :wq, quindi premi Invio.



Passaggio 4: riavviare vsftpd

Riavvia vsftpd digitando:

> sudo /etc/init.d/vsftpd restart

Dovresti vedere un messaggio simile a:

inserisci qui la descrizione dell'immagine


Se questo non funziona, prova:

> sudo /sbin/service vsftpd restart



Passaggio 5: creare un utente FTP

Se dai un'occhiata a / etc / vsftpd / user_list, vedrai quanto segue:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Questo sta sostanzialmente dicendo "Non consentire l'accesso FTP a questi utenti". vsftpd consentirà l'accesso FTP a qualsiasi utente non presente in questo elenco.

Quindi, per creare un nuovo account FTP, potrebbe essere necessario creare un nuovo utente sul tuo server. (Oppure, se hai già un account utente che non è elencato in / etc / vsftpd / user_list, puoi saltare al passaggio successivo.)

La creazione di un nuovo utente su un'istanza EC2 è piuttosto semplice. Ad esempio, per creare l'utente "bret", digitare:

> sudo adduser bret
> sudo passwd bret

Ecco come sarà:

inserisci qui la descrizione dell'immagine



Passaggio n. 6: limitazione degli utenti alle loro home directory

A questo punto, i tuoi utenti FTP non sono limitati alle loro home directory. Non è molto sicuro, ma possiamo risolverlo abbastanza facilmente.

Modifica di nuovo il tuo file conf vsftpd digitando:

> sudo vi /etc/vsftpd/vsftpd.conf

Annulla commento dalla riga:

chroot_local_user=YES

Dovrebbe apparire così una volta finito:

inserisci qui la descrizione dell'immagine

Riavvia nuovamente il server vsftpd in questo modo:

> sudo /etc/init.d/vsftpd restart

Tutto fatto!


Appendice A: Sopravvivere al riavvio

vsftpd non si avvia automaticamente all'avvio del server. Se sei come me, ciò significa che dopo aver riavviato l'istanza di EC2, sentirai un momento di terrore quando FTP sembra essere rotto, ma in realtà non funziona! Ecco un modo pratico per risolvere il problema:

> sudo chkconfig --level 345 vsftpd on

In alternativa, se stai usando redhat, un altro modo per gestire i tuoi servizi è usare questa elegante interfaccia utente grafica per controllare quali servizi dovrebbero avviarsi automaticamente:

>  sudo ntsysv

inserisci qui la descrizione dell'immagine

Ora vsftpd si avvierà automaticamente all'avvio del server.


Appendice B: modifica della home directory FTP di un utente

* NOTA: Iman Sedighi ha pubblicato una soluzione più elegante per limitare l'accesso degli utenti a una directory specifica. Si prega di fare riferimento alla sua eccellente soluzione pubblicata come risposta *

Potresti voler creare un utente e limitare il loro accesso FTP a una cartella specifica, come / var / www. Per fare ciò, dovrai cambiare la home directory predefinita dell'utente:

> sudo usermod -d /var/www/ username

In questo esempio specifico, è tipico assegnare all'utente le autorizzazioni per il gruppo "www", che è spesso associato alla cartella / var / www:

> sudo usermod -a -G www username

3
Nel step 3dopo l'aggiunta di righe nel file, come posso salvare?
Sumit Bijvani,

2
ok tutto fatto, ora come posso collegarmi a ftp?
Sumit Bijvani,

7
Ciao Sumit. Vi è un editore complicato. Per salvare il tuo lavoro, digita escape, quindi ": wq" (senza virgolette), quindi premi invio. Per quanto riguarda FTP, è difficile rispondere perché sarà basato sul tuo client FTP. Se avrò tempo, proverò ad aggiungere alcune istruzioni alla mia risposta per configurare alcuni popolari client FTP. Personalmente, uso Aptana Studio. In Aptana, crei un sito SFTP e fornisci ad Aptana il file di autenticazione della chiave pubblica che hai ottenuto quando hai creato l'istanza EC2. Se si utilizza filezilla, provare a utilizzare pageant.exe. Saluti!
clone45

6
Questo è eccellente Molto chiaro. Grazie mille.
AC Patrice,

11
In realtà, forse potrebbe darmi credito. Ha riposizionato la mia risposta il 13 gennaio
clone45

27

Per abilitare ftp passivo su un server EC2, è necessario configurare le porte che il server ftp deve utilizzare per le connessioni in entrata, quindi aprire un elenco di porte disponibili per le connessioni dati client ftp.

Non ho molta familiarità con Linux, ma i comandi che hai pubblicato sono i passaggi per installare il server ftp, configurare le regole del firewall ec2 (tramite l'API AWS), quindi configurare il server ftp per utilizzare le porte consentite sul firewall ec2 .

Quindi questo passaggio installa il client ftp (VSFTP)

> yum install vsftpd

Questi passaggi configurano il client ftp

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

ma gli altri due passaggi sono più facili da eseguire tramite la console di Amazon in gruppi di sicurezza EC2. È necessario configurare il gruppo di sicurezza assegnato al server per consentire le connessioni sulle porte 20,21 e 1024-1048


So cosa significano quelle righe, ma non so dove digitarle ... Questo è il problema ...
SharkTheDark

1
dalla riga di comando sul server su cui si sta installando il server ftp?
jaminto,

2
Connettiti al tuo server tramite SSH: blog.taggesell.de/index.php?/archives/…
jaminto

Nel caso in cui ricevi ancora un errore (500 OOPS: vsftpd: rifiuta di funzionare con root scrivibile dentro chroot ()), questo risolto il problema per me: benscobie.com/…
kaore

Sono scioccato dal fatto che FTP anonimo sia attivo per impostazione predefinita!
Jeffee,

16

Grazie @ clone45 per la bella soluzione. Ma ho avuto solo un problema importante con l'appendice b della sua soluzione. Immediatamente dopo aver modificato la directory home in var / www / html, non sono riuscito a connettermi al server tramite ssh e sftp perché mostra sempre i seguenti errori

permission denied (public key)

o in FileZilla ho ricevuto questo errore:

No supported authentication methods available (server: public key)

Ma potrei accedere al server tramite la normale connessione FTP.

Se hai riscontrato lo stesso errore, annulla l'appendice b della soluzione @ clone45 impostando la home directory predefinita per l'utente:

sudo usermod -d /home/username/ username

Ma quando si imposta la home directory predefinita dell'utente, l'utente ha accesso a molte altre cartelle esterne a / var / www / http. Quindi, per proteggere il tuo server, segui questi passaggi:

1- Crea gruppo sftponly Crea un gruppo per tutti gli utenti a cui desideri limitare l'accesso solo a ftp e sftp a var / www / html. per fare il gruppo:

sudo groupadd sftponly

2- Esegui il jailing della chroot Per limitare l'accesso di questo gruppo al server tramite sftp devi eseguire il jailing della chroot per non consentire agli utenti del gruppo di accedere a qualsiasi cartella tranne la cartella html all'interno della sua home directory. per farlo apri /etc/ssh/sshd.config nel vim con sudo. Alla fine del file, si prega di commentare questa riga:

Subsystem sftp /usr/libexec/openssh/sftp-server

E quindi aggiungi questa riga di seguito:

Subsystem sftp internal-sftp

Quindi abbiamo sostituito il sottosistema con internal-sftp. Quindi aggiungi le seguenti righe sottostanti:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

Dopo aver aggiunto questa riga ho salvato le mie modifiche e quindi riavviato il servizio ssh:

sudo service sshd restart

3- Aggiungi l'utente al gruppo sftponly Qualsiasi utente che desideri limitare l'accesso deve essere un membro del gruppo sftponly. Quindi lo uniamo a sftponly da: sudo usermod -G sftponly username

4- Limitare l'accesso degli utenti a solo var / www / html Per limitare l'accesso degli utenti alla cartella solo var / www / html è necessario creare una directory nella directory home (con il nome di 'html') di quell'utente e quindi montare / var / www a / home / nome utente / html come segue:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- Impostare l'accesso in scrittura Se l'utente ha bisogno dell'accesso in scrittura a / var / www / html, è necessario eseguire il jailing dell'utente in / var / www che deve avere root: proprietà di root e permessi di 755. Quindi è necessario fornire / var / proprietà www / html di root: sftponly e permessi di 775 aggiungendo le seguenti righe:

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6- Blocco dell'accesso alla shell Se si desidera limitare l'accesso al non accesso alla shell per renderlo più sicuro, modificare semplicemente la shell predefinita in bin / false come segue:

sudo usermod -s /bin/false username

sul tuo sudo mount --bind /var/www /home/username/htmlmi viene detto che non esiste una cartella www. Presumo che ciò avvenga da root (dove si trova la cartella / home)?
elliotrock,

1
sudo chown root:www /var/www/htmldichiara chown: gruppo non valido: 'root: www'
elliotrock,

2
La parte 6 dovrebbe essere sudo usermod -s /sbin/nologin usernamemeglio a causa delle restrizioni di shell predefinite del modulo pam di vsftpd (e sembra funzionare meglio nel mio caso). E la parte 4 mountdeve essere eseguita ad ogni riavvio, quindi è una buona idea metterlo in rc.local.
phy25

11

Ottimo articolo ... ha funzionato come un gioco da ragazzi su Amazon Linux AMI.

Altri due utili comandi:

Per modificare la cartella di caricamento FTP predefinita

Passo 1:

edit /etc/vsftpd/vsftpd.conf

Passaggio 2: crea una nuova voce nella parte inferiore della pagina:

local_root=/var/www/html

Per applicare le autorizzazioni di lettura, scrittura ed eliminazione ai file nella cartella in modo da poter gestire utilizzando un dispositivo FTP

find /var/www/html -type d -exec chmod 777 {} \;

11
che chmods ogni file e cartella a 777, che non è sicuro per un sito Web
sergiogx

OK. Quindi quale cambiamento suggerisci su questo?
Ravi Shanker,

3
Dovresti assegnare le autorizzazioni necessarie, non solo aprire tutte le autorizzazioni a tutto o stai chiedendo problemi. Ad esempio, usando chmod -R ug + rw / var / www / html concederai autorizzazioni di lettura e scrittura per l'utente e il gruppo a tutti i file senza concedere autorizzazioni di esecuzione non necessarie e autorizzazioni ad altri. Quindi configurare utenti e gruppi di conseguenza in modo che non sia necessario modificarne altri. Cioè se il tuo utente ftp può leggere e scrivere tutti i file e il tuo server web può leggere che sei impostato. Metti entrambi gli utenti nello stesso gruppo e aggiungi rw all'utente e r al gruppo.
AaronM,

Dovresti applicare 775 a / var / www / html. il resto delle sottocartelle e dei file può ottenere autorizzazioni in base alle necessità. 777 non è molto sicuro.
Iman Sedighi,

6

Se hai abilitato uww, ricorda di aggiungere ftp:

> sudo ufw allow ftp

Mi ci sono voluti 2 giorni per rendermi conto che ho abilitato ufw.


o iptables, o ... sì, lo dimentico sempre anche io!
jsh,

6

Non andrà bene fino a quando non aggiungi il tuo utente al gruppo www con i seguenti comandi:

sudo usermod -a -G www <USER>

Questo risolve il problema di autorizzazione.

Imposta il percorso predefinito aggiungendo questo:

local_root=/var/www/html

4

Non dimenticare di aggiornare il firewall di iptables se ne hai uno per consentire gli intervalli 20-21 e 1024-1048.

Fallo da / etc / sysconfig / iptables

Aggiunta di linee come questa:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024: 1048 -j ACCEPT

E riavvia iptables con il comando:

sudo service iptables restart


4

Ho semplificato i passaggi di clone45:

Apri le porte come ha detto

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

2

Ho seguito la risposta di clone45 fino alla fine. Un grande articolo! Dato che avevo bisogno dell'accesso FTP per installare i plug-in in uno dei miei siti wordpress, ho cambiato la directory home in / var / www / mysitename. Quindi ho continuato ad aggiungere il mio utente ftp al gruppo apache (o www) in questo modo:

sudo usermod -a -G apache myftpuser

Dopo questo ho ancora visto questo errore sulla pagina di installazione del plugin di WP: "Impossibile trovare la directory del contenuto di WordPress (wp-content)". Ho cercato e trovato questa soluzione in una sessione di domande e risposte di wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content e ha aggiunto quanto segue alla fine di wp- config.php:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

Dopo questo il mio plugin WP è stato installato con successo.


0

forse vale la pena menzionare, oltre alla risposta di clone45 :

Correzione delle autorizzazioni di scrittura per utenti FTP chrooted in vsftpd

La versione vsftpd fornita con Ubuntu 12.04 Precise non consente agli utenti locali chroot di scrivere per impostazione predefinita. Di default lo avrai in /etc/vsftpd.conf :

chroot_local_user=YES
write_enable=YES

Per consentire agli utenti locali di scrivere, è necessario aggiungere il seguente parametro:

allow_writeable_chroot=YES

Nota: i problemi con le autorizzazioni di scrittura possono essere visualizzati come i seguenti errori FileZilla :

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

Riferimenti:
Correzione delle autorizzazioni di scrittura per utenti FTP chrooted in vsftpd
VSFTPd ha smesso di funzionare dopo l'aggiornamento


0

Nel caso in cui la password 530 non sia corretta

È necessario 1 ulteriore passaggio

nel file / etc / shells

Aggiungi la seguente riga

/ Bin / false


-2

FileZila è un ottimo strumento FTP da configurare con Amazon Cloud.

  1. Scarica il client FileZila da https://filezilla-project.org/
  2. Fare clic su File -> Site Manager ->
  3. Nuovo sito
  4. Fornisci il nome host dell'indirizzo IP della posizione del cloud amazon (Porta se presente)
  5. Protocollo - SFTP (può cambiare in base alle tue esigenze)
  6. Tipo di accesso - Normale (quindi il sistema non richiederà la password ogni volta)
  7. Fornire nome utente e password.
  8. Collegare.

È necessario eseguire questo passaggio solo 1 volta, in seguito caricherà il contenuto sullo stesso indirizzo IP e sullo stesso sito.

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.