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.
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
Où /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.