Configuration de FTP sur Amazon Cloud Server [fermé]

257

J'essaie de configurer FTP sur Amazon Cloud Server, mais sans chance. Je cherche sur le net et il n'y a pas d'étapes concrètes pour le faire.

J'ai trouvé ces commandes à exécuter:

$ 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

Mais je ne sais pas où les écrire.

SharkTheDark
la source
10
Cette question doit être migrée vers serverfault.com.
Jérôme Verstrynge

Réponses:

570

Jaminto a fait un excellent travail pour répondre à la question, mais j'ai récemment suivi le processus moi-même et je voulais développer la réponse de Jaminto.

Je suppose que vous avez déjà créé une instance EC2 et que vous lui avez associé une adresse IP élastique.


Étape # 1: Installez vsftpd

SSH sur votre serveur EC2. Type:

> sudo yum install vsftpd

Cela devrait installer vsftpd.

Étape # 2: Ouvrez les ports FTP sur votre instance EC2

Ensuite, vous devrez ouvrir les ports FTP sur votre serveur EC2. Connectez-vous à AWS EC2 Management Console et sélectionnez Groupes de sécurité dans l'arborescence de navigation à gauche. Sélectionnez le groupe de sécurité affecté à votre instance EC2. Sélectionnez ensuite l'onglet Entrant, puis cliquez sur Modifier:

entrez la description de l'image ici

Ajoutez deux règles TCP personnalisées avec les plages de ports 20-21 et 1024-1048. Pour Source, vous pouvez sélectionner «N'importe où». Si vous décidez de définir Source sur votre propre adresse IP, sachez que votre adresse IP peut changer si elle est attribuée via DHCP.

entrez la description de l'image ici



Étape # 3: effectuez des mises à jour du fichier vsftpd.conf

Modifiez votre fichier de configuration vsftpd en tapant:

> sudo vi /etc/vsftpd/vsftpd.conf

Désactivez le FTP anonyme en modifiant cette ligne:

anonymous_enable=YES

à

anonymous_enable=NO

Ajoutez ensuite les lignes suivantes au bas du fichier vsftpd.conf:

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

Votre fichier vsftpd.conf devrait ressembler à ceci - sauf assurez-vous de remplacer pasv_address par votre adresse IP publique:

entrez la description de l'image ici

Pour enregistrer les modifications, appuyez sur échap, puis tapez :wq, puis appuyez sur entrée.



Étape # 4: Redémarrez vsftpd

Redémarrez vsftpd en tapant:

> sudo /etc/init.d/vsftpd restart

Vous devriez voir un message qui ressemble à ceci:

entrez la description de l'image ici


Si cela ne fonctionne pas, essayez:

> sudo /sbin/service vsftpd restart



Étape # 5: créer un utilisateur FTP

Si vous jetez un œil à / etc / vsftpd / user_list, vous verrez ce qui suit:

# 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

Cela signifie essentiellement: «Ne pas autoriser l'accès FTP à ces utilisateurs». vsftpd autorisera l'accès FTP à tout utilisateur ne figurant pas sur cette liste.

Ainsi, afin de créer un nouveau compte FTP, vous devrez peut-être créer un nouvel utilisateur sur votre serveur. (Ou, si vous avez déjà un compte d'utilisateur qui n'est pas répertorié dans / etc / vsftpd / user_list, vous pouvez passer à l'étape suivante.)

La création d'un nouvel utilisateur sur une instance EC2 est assez simple. Par exemple, pour créer l'utilisateur «bret», tapez:

> sudo adduser bret
> sudo passwd bret

Voici à quoi cela ressemblera:

entrez la description de l'image ici



Étape # 6: restreindre les utilisateurs à leurs répertoires personnels

À ce stade, vos utilisateurs FTP ne sont pas limités à leurs répertoires personnels. Ce n'est pas très sûr, mais nous pouvons le réparer assez facilement.

Modifiez à nouveau votre fichier de configuration vsftpd en tapant:

> sudo vi /etc/vsftpd/vsftpd.conf

Décommentez la ligne:

chroot_local_user=YES

Cela devrait ressembler à ceci une fois que vous avez terminé:

entrez la description de l'image ici

Redémarrez le serveur vsftpd comme suit:

> sudo /etc/init.d/vsftpd restart

Terminé!


Annexe A: Survivre à un redémarrage

vsftpd ne démarre pas automatiquement au démarrage de votre serveur. Si vous êtes comme moi, cela signifie qu'après le redémarrage de votre instance EC2, vous ressentirez un moment de terreur lorsque FTP semble être cassé - mais en réalité, il ne fonctionne tout simplement pas!. Voici un moyen pratique de résoudre ce problème:

> sudo chkconfig --level 345 vsftpd on

Alternativement, si vous utilisez redhat, une autre façon de gérer vos services est d'utiliser cette interface utilisateur graphique astucieuse pour contrôler les services qui devraient démarrer automatiquement:

>  sudo ntsysv

entrez la description de l'image ici

Maintenant, vsftpd démarrera automatiquement au démarrage de votre serveur.


Annexe B: Modification du répertoire de base FTP d'un utilisateur

* REMARQUE: Iman Sedighi a publié une solution plus élégante pour restreindre l'accès des utilisateurs à un répertoire spécifique. Veuillez vous référer à son excellente solution affichée comme réponse *

Vous souhaiterez peut-être créer un utilisateur et restreindre son accès FTP à un dossier spécifique, tel que / var / www. Pour ce faire, vous devrez modifier le répertoire personnel par défaut de l'utilisateur:

> sudo usermod -d /var/www/ username

Dans cet exemple spécifique, il est typique de donner à l'utilisateur des autorisations sur le groupe «www», qui est souvent associé au dossier / var / www:

> sudo usermod -a -G www username
clone45
la source
3
Après step 3avoir ajouté des lignes dans un fichier, comment puis-je l'enregistrer?
Sumit Bijvani
2
ok tout est fait, comment puis-je me connecter à ftp?
Sumit Bijvani
7
Salut Sumit. Vi est un éditeur délicat. Pour enregistrer votre travail, tapez escape, puis ": wq" (sans les guillemets), puis appuyez sur entrée. Quant au FTP, c'est difficile à répondre car il sera basé sur votre client FTP. Si j'ai le temps, j'essaierai d'ajouter quelques instructions à ma réponse pour configurer certains clients FTP populaires. Personnellement, j'utilise Aptana Studio. Dans Aptana, vous créez un site SFTP et fournissez à Aptana le fichier d'authentification à clé publique que vous avez obtenu lorsque vous avez créé votre instance EC2. Si vous utilisez filezilla, essayez d'utiliser pageant.exe. À votre santé!
clone45
6
C'est excellent. Très clair. Merci beaucoup.
AC Patrice du
11
En fait, il pourrait peut-être me donner du crédit. Il a déposé ma réponse le 13 janvier.
clone45
27

Pour activer le ftp passif sur un serveur EC2, vous devez configurer les ports que votre serveur ftp doit utiliser pour les connexions entrantes, puis ouvrir une liste des ports disponibles pour les connexions de données client ftp.

Je ne connais pas très bien Linux, mais les commandes que vous avez publiées sont les étapes pour installer le serveur ftp, configurer les règles du pare-feu ec2 (via l'API AWS), puis configurer le serveur ftp pour utiliser les ports autorisés sur le pare-feu ec2 .

Cette étape installe donc le client ftp (VSFTP)

> yum install vsftpd

Ces étapes configurent le 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

mais les deux autres étapes sont plus faciles à réaliser via la console amazon sous les groupes de sécurité EC2. Là, vous devez configurer le groupe de sécurité affecté à votre serveur pour autoriser les connexions sur les ports 20,21 et 1024-1048

jaminto
la source
Je sais ce que ces lignes signifient, mais je ne sais pas où les taper ... C'est le problème ...
SharkTheDark
1
sur la ligne de commande du serveur sur lequel vous installez le serveur ftp?
jaminto
2
Connectez-vous à votre serveur via SSH: blog.taggesell.de/index.php?/archives/…
jaminto
Dans le cas où vous obtenez toujours une erreur (500 OOPS: vsftpd: refus d'exécuter avec la racine accessible en écriture dans chroot ()), cela a résolu le problème pour moi: benscobie.com/…
kaore
Je suis choqué que le FTP anonyme soit activé par défaut!
jeffkee
16

Merci @ clone45 pour la belle solution. Mais je n'avais qu'un seul problème important avec l'annexe B de sa solution. Immédiatement après avoir changé le répertoire personnel en var / www / html, je n'ai pas pu me connecter au serveur via ssh et sftp car il affiche toujours les erreurs suivantes

permission denied (public key)

ou dans FileZilla j'ai reçu cette erreur:

No supported authentication methods available (server: public key)

Mais je pouvais accéder au serveur via une connexion FTP normale.

Si vous avez rencontré la même erreur, annulez simplement l'annexe B de la solution @ clone45 en définissant le répertoire de base par défaut de l'utilisateur:

sudo usermod -d /home/username/ username

Mais lorsque vous définissez le répertoire de base par défaut de l'utilisateur, l'utilisateur a accès à de nombreux autres dossiers en dehors de / var / www / http. Donc, pour sécuriser votre serveur, suivez ces étapes:

1- Créer un groupe sftponly Créez un groupe pour tous les utilisateurs dont vous souhaitez restreindre l'accès à seulement ftp et sftp à var / www / html. pour faire le groupe:

sudo groupadd sftponly

2- Emprisonnement du chroot Pour restreindre l'accès de ce groupe au serveur via sftp vous devez emprisonner le chroot pour ne pas laisser les utilisateurs du groupe accéder à n'importe quel dossier à l'exception du dossier html dans son répertoire personnel. pour ce faire, ouvrez /etc/ssh/sshd.config dans le vim avec sudo. À la fin du fichier, veuillez commenter cette ligne:

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

Et puis ajoutez cette ligne ci-dessous:

Subsystem sftp internal-sftp

Nous avons donc remplacé le sous-système par internal-sftp. Ajoutez ensuite les lignes suivantes en dessous:

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

Après avoir ajouté cette ligne, j'ai enregistré mes modifications, puis redémarré le service ssh en:

sudo service sshd restart

3- Ajouter l'utilisateur au groupe sftponly Tout utilisateur dont vous souhaitez restreindre l'accès doit être membre du groupe sftponly. C'est pourquoi nous le rejoignons à sftponly par: sudo usermod -G sftponly username

4- Restreindre l'accès utilisateur à seulement var / www / html Pour restreindre l'accès utilisateur à seulement le dossier var / www / html, nous devons créer un répertoire dans le répertoire personnel (avec le nom de 'html') de cet utilisateur, puis monter / var / www vers / home / nom d'utilisateur / html comme suit:

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

5- Définir l'accès en écriture Si l'utilisateur a besoin d'un accès en écriture à / var / www / html, vous devez emprisonner l'utilisateur dans / var / www qui doit avoir root: propriété root et les autorisations de 755. Vous devez alors donner / var / www / html propriété de root: sftponly et permissions de 775 en ajoutant les lignes suivantes:

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- Bloquer l'accès au shell Si vous souhaitez restreindre l'accès à ne pas accéder au shell pour le rendre plus sécurisé, changez simplement le shell par défaut en bin / false comme suit:

sudo usermod -s /bin/false username
Iman Sedighi
la source
sur votre on sudo mount --bind /var/www /home/username/htmlme dit qu'il n'y a pas de dossier www. Je suppose que cela se fait à partir de la racine (où se trouve le dossier / home)?
elliotrock
1
sudo chown root:www /var/www/htmlétats chown: groupe invalide: 'root: www'
elliotrock
2
La partie 6 devrait mieux être à sudo usermod -s /sbin/nologin usernamecause des restrictions par défaut du shell du module pam de vsftpd (et cela semble mieux fonctionner dans mon cas). Et la partie 4 mountdoit être effectuée à chaque redémarrage, c'est donc une bonne idée de la placer dans rc.local.
phy25
11

Great Article ... a fonctionné comme une brise sur Amazon Linux AMI.

Deux commandes plus utiles:

Pour modifier le dossier de téléchargement FTP par défaut

Étape 1:

edit /etc/vsftpd/vsftpd.conf

Étape 2: créez une nouvelle entrée en bas de la page:

local_root=/var/www/html

Pour appliquer l'autorisation de lecture, d'écriture et de suppression aux fichiers du dossier afin de pouvoir gérer à l'aide d'un périphérique FTP

find /var/www/html -type d -exec chmod 777 {} \;
Ravi Shanker
la source
11
qui chmods chaque fichier et dossier au 777, qui n'est pas sécurisé pour un site Web
sergiogx
D'ACCORD. Alors, quel changement proposez-vous à ce sujet?
Ravi Shanker
3
Vous devez attribuer les autorisations nécessaires, ne vous contentez pas d'ouvrir toutes les autorisations à tout ou vous demandez des problèmes. Par exemple, l'utilisation de chmod -R ug + rw / var / www / html accordera des autorisations de lecture et d'écriture pour l'utilisateur et le groupe à tous les fichiers sans accorder d'autorisations d'exécution et d'autorisations inutiles à d'autres. Configurez ensuite les utilisateurs et les groupes en conséquence afin que vous n'ayez pas besoin d'en modifier d'autres. C'est-à-dire si votre utilisateur ftp peut lire et écrire tous les fichiers et que votre serveur Web peut lire que vous êtes défini. Mettez les deux utilisateurs dans le même groupe et ajoutez rw à l'utilisateur et r au groupe.
AaronM
Vous devez appliquer 775 au fichier / var / www / html. le reste des sous-dossiers et fichiers peut obtenir des autorisations en fonction des besoins. 777 est très dangereux.
Iman Sedighi
6

Si vous avez activé ufw, n'oubliez pas d'ajouter ftp:

> sudo ufw allow ftp

Il m'a fallu 2 jours pour réaliser que j'avais activé ufw.

chbong
la source
ou iptables, ou ... ouais j'oublie toujours aussi!
2015
6

Ce ne sera pas correct tant que vous n'ajoutez pas votre utilisateur au groupe www par les commandes suivantes:

sudo usermod -a -G www <USER>

Cela résout le problème d'autorisation.

Définissez le chemin par défaut en ajoutant ceci:

local_root=/var/www/html
user1802434
la source
4

N'oubliez pas de mettre à jour votre pare-feu iptables si vous en avez un pour autoriser les plages 20-21 et 1024-1048.

Faites cela depuis / etc / sysconfig / iptables

Ajout de lignes comme celle-ci:

-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

Et redémarrez iptables avec la commande:

sudo service iptables restart

Kevin Meek
la source
4

J'ai simplifié les étapes de clone45:

Ouvrez les ports comme il l'a mentionné

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
Willem Bressers
la source
2

J'ai suivi la réponse de clone45 jusqu'à la fin. Un super article! Comme j'avais besoin de l'accès FTP pour installer des plug-ins sur l'un de mes sites wordpress, j'ai changé le répertoire personnel en / var / www / mysitename. Ensuite, j'ai continué à ajouter mon utilisateur ftp au groupe apache (ou www) comme ceci:

sudo usermod -a -G apache myftpuser

Après cela, j'ai toujours vu cette erreur sur la page d'installation du plugin WP: "Impossible de localiser le répertoire de contenu WordPress (wp-content)". Vous avez recherché et trouvé cette solution sur une session de questions / réponses de wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content et ajouté ce qui suit à la fin de wp- config.php:

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

Après cela, mon plugin WP a été installé avec succès.

CodeBrew
la source
0

peut-être la peine de mentionner en plus de la réponse de clone45 :

Correction des autorisations d'écriture pour les utilisateurs FTP chrootés dans vsftpd

La version vsftpd fournie avec Ubuntu 12.04 Precise ne permet pas aux utilisateurs locaux chrootés d'écrire par défaut. Par défaut, vous aurez ceci dans /etc/vsftpd.conf :

chroot_local_user=YES
write_enable=YES

Afin de permettre aux utilisateurs locaux d'écrire, vous devez ajouter le paramètre suivant:

allow_writeable_chroot=YES

Remarque: Les problèmes avec les autorisations d'écriture peuvent apparaître comme les erreurs FileZilla suivantes :

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

Références:
La correction des autorisations d'écriture pour les utilisateurs FTP chrootés dans vsftpd
VSFTPd a cessé de fonctionner après la mise à jour

Hartmut
la source
0

Si vous obtenez un mot de passe 530 incorrect

1 étape supplémentaire nécessaire

dans le fichier / etc / shells

Ajoutez la ligne suivante

/ bin / false

Varun Bhatia
la source
-2

FileZila est un bon outil FTP pour configurer avec Amazon Cloud.

  1. Téléchargez le client FileZila depuis https://filezilla-project.org/
  2. Cliquez sur Fichier -> Gestionnaire de site ->
  3. Nouveau site
  4. Indiquez l'adresse IP du nom d'hôte de votre emplacement dans le cloud Amazon (port le cas échéant)
  5. Protocole - SFTP (peut changer en fonction de vos besoins)
  6. Type de connexion - Normal (le système ne demandera donc pas de mot de passe à chaque fois)
  7. Indiquez le nom d'utilisateur et le mot de passe.
  8. Relier.

Vous devez effectuer ces étapes une seule fois, plus tard, le contenu sera téléchargé vers la même adresse IP et le même site.

Pratima
la source