web-dev-qa-db-fra.com

Utilisation de SFTP avec la directive SSH ForceCommand

J'ai configuré un serveur SSH (appelez-le group2.fqdn) avec cette directive ForceCommand:

Match Group group1
       ForceCommand ssh -t group1.fqdn

Match Group="*,!local,!group2,!root"
       ForceCommand ssh -t group3.fqdn

Ceci rompt sftp pour les utilisateurs ne figurant pas dans group2. Comment puis-je modifier cela pour que sftp fonctionne?

Ainsi: user1 de group1 fait:

sftp group2.fqdn

et ils (ayant peut-être à entrer deux fois les mots de passe) font alors réellement sftp à group1.fqdn. Cela peut-il être fait?


Le contexte:
Dans notre laboratoire, nous avons quelques serveurs Ubuntu pour chaque groupe, mais un seul est autorisé à accéder à l'extérieur. Tous les groupes doivent donc se connecter au serveur d'un groupe et tous sauf un sont forcés de passer à SSH sur un autre serveur. . Nous avions l'habitude de faire cela avec un shell personnalisé, mais j'essaie d'utiliser les options de serveur disponibles au lieu de hacks. La variante de shell personnalisée n'autorisait pas SFTP, et cela non plus, mais j'aimerais bien que SFTP fonctionne pour tous ces serveurs.

2
muru

L'astuce pour que SFTP fonctionne est de transmettre au serveur la commande SSH reçue du client en l'état. J'ai découvert cela en testant ce qui se passe lorsque vous faites scp ou sftp pour ne question sous Unix et Linux .

Maintenant, ma configuration ressemble à:

Match Group group1
       ForceCommand /usr/local/bin/ssh_wrapper group1

Match Group="*,!local,!group2,!root"
       ForceCommand /usr/local/bin/ssh_wrapper group3

/usr/local/bin/ssh_wrapper est:

#! /bin/sh

/usr/bin/ssh -t -o StrictHostKeyChecking=no $USER@${1:-default}.fqdn $SSH_ORIGINAL_COMMAND

A partir de quelques tests rapides, sftp et scp fonctionnent correctement avec cette configuration.

2
muru