Archives par étiquette : sftp

SFTP, chroot et pas de SSH : bloquer un utilisateur dans un répertoire

Salut,
Un petit article sur ce sujet récurrent car il y a plein de méthodes, dont une assez simple, mais avec 2/3 points de paramétrage précis.
Le but est de permettre à un client/fournisseur d’envoyer/récupérer des fichiers sur un serveur, en SFTP, sans pour autant lui donner accès en SSH (exécuter des commandes) et sans voir autre part que son « home ».
Le tout sur un serveur SSH déjà monté et par ailleurs utilisé pour du SSH normal en interne, avec du SFTP normal aussi.

Il y a 3 méthodes courantes pour commencer à jouer avec les chroot ssh/sftp :

  • Héberger un serveur SSH en chroot normal : c’est chiant. Créer un « home », reproduire un minimum d’arborescence standard, d’utilisateurs etc.
  • Utiliser rssh comme shell alternatif, c’est un shell qui limite l’utilisateur à du SFTP, SCP, CVS, RSYNC etc. On choisit ce qu’on veut tolérer. Mais, l’utilisateur peut quand même se promener dans le système (tout « / »).
  • Enfin, ce que je vais décrire : utiliser la fonctionnalité de « chroot » intégrée aux serveurs SSH (serveur ssh >= 4.8, donc n’importe quel SSH d’une Debian stable de nos jours). On va simplement brider quelques comptes et mettre quelques permissions bien senties.

Continuer la lecture

SFTP : mot de passe en ligne de commande

Petit souci du jour : utiliser sftp en ligne de commande, avec un mot de passe, en mode batch, MAIS sans passer par une authentification par clef. Sachant que sftp n’accepte pas de mot de passe en ligne de commande (ni via une redirection depuis STDIN).

Pourquoi donc me direz-vous ? simplement parce-que dans l’éventualité où faire bouger le prestataire en face de vous (celui qui héberge le serveur SSH) coûterait trop d’énergie, on va supposer qu’on ne peut pas facilement faire avaler notre clef publique à l’hébergeur du serveur SSH.

Bref, la commande traditionnelle est :

sftp utilisateur@serveur
Connecting to serveur...
utilisateur@serveur's password:
sftp>

J’ai trouvé une méthode simple : utiliser le client SFTP de « PuTTY ».
Je pensais au départ utiliser celui de « lftp » et sauvegarder ma connexion (avec mot de passe) en bookmark, mais comme mon login dans l’histoire est un utilisateur de domaine windows (ouais, le serveur SSH en face est sous windows O_o), y’a un \ dans le login et même en le doublant, lftp semble mal le digérer, ben j’étais aussi bloqué.

Bref, en installant les outils de PuTTY :

aptitude install putty-tools

On peut alors taper :

psftp -pw mon_pass utilisateur@serveur
Using username "utilisateur".
Remote working directory is /
psftp>

Attention : le mot de passe est en clair dans la ligne de commande, donc dans les processus etc etc. Donc c’est pas idéal comme condition.
Enfin, je n’ai pas mis le paramètre -b pour mon batch, car ce n’est pas le propos là.