Comment configurer un serveur SFTP avec les utilisateurs chrootés dans leurs répertoires personnels? [dupliquer]

20

J'ai essayé de configurer un serveur SFTP avec plusieurs utilisateurs chrootant dans leurs répertoires personnels. J'ai suivi les conseils sur ce guide ( lien Archive.org ), puis exécuté les commandes suivantes sur les répertoires de l'utilisateur

chown root:root /home/user/
chmod 755 /home/user/

Il existe un dossier supplémentaire dans le répertoire personnel de chaque utilisateur, appelé public , qui lui appartient afin de lui permettre de créer des répertoires, de télécharger et de supprimer des fichiers si nécessaire. (Cela a été conseillé dans le guide que j'ai mentionné plus tôt)

Maintenant que j'exécute sftp -P 435 [email protected] , j'obtiens cette erreur:

  

Échec de l'écriture: tuyau cassé
  Impossible de lire le paquet: connexion réinitialisée par l'homologue

Comment procéder à partir d'ici? L'idée ultime est que chaque utilisateur d'une autre machine utilise FileZilla pour se connecter à ses répertoires personnels chrootés, puis télécharger des répertoires et des fichiers. Tout cela dans SFTP (parce que c'est plus sûr)

    
posée Nitin Venkatesh 17.06.2011 - 17:10
la source

5 réponses

24

Cet article décrit également comment obtenir un accès au shell chrooté, mais comme vous ne voulez qu’un compte sftp, suivez simplement les instructions suivantes:

Modifiez /etc/ssh/sshd_config et ajoutez les lignes:

SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

Trouvez la ligne UsePAM yes et commentez-la:

#UsePAM yes

Sans désactiver ceci, mon serveur SSH tomberait en panne lors du rechargement / redémarrage. Comme je n'ai pas besoin de fonctions sophistiquées de PAM, c'est bien.

Pour plus de sécurité, limitez les utilisateurs pouvant se connecter. Si vous oubliez d'ajouter des utilisateurs SFTP au groupe sftp , vous leur donnez un accès gratuit au shell. Pas un beau scénario. Comme SSH ne peut pas combiner AllowUsers et AllowGroups (une connexion doit respecter les deux règles), vous devez créer un groupe supplémentaire, par exemple ssh-users . Ajoutez les utilisateurs autorisés à se connecter ( youruser ci-dessous) via SSH:

sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users

Et ajoutez la ligne suivante à /etc/ssh/sshd_config :

AllowGroups ssh-users sftp

Procédez maintenant à la modification des permissions du répertoire personnel des utilisateurs pour autoriser le chrootation (exemple utilisateur sftp-user ):

sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user

Créez un répertoire dans lequel sftp-user est libre d’y placer des fichiers:

sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public

Si vous rencontrez des problèmes, vérifiez /var/log/syslog et /var/log/auth.log pour plus de détails. Exécutez ssh ou sftp avec l'option -vvv pour le débogage des messages. Pour sftp , l'option doit apparaître avant l'hôte comme dans sftp -vvv [email protected] .

    
réponse donnée Lekensteyn 17.06.2011 - 18:36
la source
8

J'utilise Ubuntu LTS 12.04 et après beaucoup de douleur, cela a fonctionné pour moi.

Mes paramètres pour /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  1. créer un groupe sftp:

    groupadd sftp

  2. Créez l’utilisateur directement avec le nouveau groupe sftp associé:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. définir les autorisations à utiliser avec ssh pour sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. redémarrer le service:

    service ssh restart

Notez que le dossier de base du nouvel utilisateur sftp doit être propriétaire de la racine.

    
réponse donnée Aten 16.10.2012 - 15:41
la source
7

Je voulais juste ajouter que les autorisations de dossier dans l’arborescence des répertoires doivent être définies d’une certaine manière.

  

Les exigences strictes de propriété / autorisations de sshd imposent que chaque   le répertoire dans le chemin chroot doit appartenir à root et être uniquement accessible en écriture   par le propriétaire.

Source

J'avais une erreur très similaire et la correction de mes permissions de répertoire a résolu le problème pour moi.

    
réponse donnée Nathan Jones 30.09.2015 - 22:08
la source
3

Voici un guide étape par étape pour autoriser:

  1. Accès SFTP à / home / bob / uploads pour l'utilisateur bob
  2. Verrouillez le bob de SSH
  3. Utilisez un nom d'utilisateur / mot de passe plutôt que des clés:

Commencez par éditer votre fichier / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Faites défiler et modifiez:

PasswordAuthentication yes

et ajoutez ceci en bas:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Appuyez sur Ctrl-X pour quitter et enregistrer.

Ajoutez maintenant l'utilisateur:

sudo useradd bob
sudo passwd bob

Ajoutez maintenant les groupes et désactivez ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Maintenant, définissez les autorisations:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Tout ceci est connecté en tant qu'utilisateur root (utilisateur ec2 sur les AMI Amazon Linux)

    
réponse donnée Rob Mulder 26.07.2016 - 03:28
la source
0

Notez également que lorsque vous ajoutez la directive Match au fichier de configuration, toutes les directives ne correspondant pas à ce que vous faites correspondre peuvent cesser de fonctionner. Plutôt que de commenter tout ce qui n'est pas compatible, déplacez simplement toutes les sections contenant une directive Match à la fin du fichier de configuration.

En outre, les autorisations doivent probablement être définies sur 755 dans le répertoire chroot et les répertoires parents, et le propriétaire doit être root: root. Personnellement, j'ai configuré le répertoire chroot sshd_config pour qu'il soit% h, le répertoire de base de l'utilisateur, puis définissez leur répertoire de départ comme je le souhaite, par exemple /var/www/examplewebsite.com. Certains préféreront peut-être configurer un répertoire de base chroot avec une partie statique suivie du nom d'utilisateur, tel que / var / www /% u, mais cela nécessite bien sûr de s'assurer que le répertoire chroot de votre utilisateur correspond à son nom d'utilisateur.

Pour résoudre les problèmes de connexion, arrêtez le service ssh en vous assurant d’ouvrir d’abord une session SSH ou deux pour le tester, puis démarrez le démon de manière interactive en mode débogage pour examiner les informations de débogage. , et chercher comment les réparer.

Commandes: service ssh stop; / usr / sbin / sshd -d

Assurez-vous de redémarrer ssh up une fois que vous avez terminé! Commande: service ssh start

    
réponse donnée RedScourge 28.01.2016 - 03:09
la source

Lire d'autres questions sur les étiquettes