Répertoire de base SSH par sous-domaine

12

Je me demande s'il est possible de définir différents répertoires personnels pour le même utilisateur ssh pour chaque sous-domaine.

Supposons donc que votre connexion avec ssh [email protected]votre répertoire personnel soit: /www/httpdocs/

Si vous vous connectez avec ssh [email protected]votre répertoire personnel, ce sera: /www/subdomain1/

Si vous vous connectez avec ssh [email protected]votre répertoire personnel, ce sera: /www/subdomain2/

...

Etc.

kapale
la source

Réponses:

19

SSH ne peut pas faire cela car le protocole SSH n'inclut pas le nom d'hôte demandé dans l'appel. (HTTP est l'un des rares protocoles qui inclut le nom d'hôte demandé, c'est ainsi qu'il peut être utilisé pour l'hébergement virtuel.) Il y a quelques autres choses que vous pouvez essayer à la place:

  • Vous pouvez créer des utilisateurs distincts pour chaque sous-domaine, mais avec le même UID que l'utilisateur "principal". Les utilisateurs du sous-domaine auraient leur répertoire personnel défini dans le sous-répertoire. Exemple:

    useradd -o -u 4711 -d /var/www/subdomain1 subdomain1

  • Utilisez un module PAM pour vous authentifier en fonction du sous-domaine. Si un tel module existe, je n'ai aucune idée de ce qu'il serait, mais cela pourrait valoir la peine d'être étudié.

  • Utilisez des clés SSH distinctes pour chaque sous-domaine. Côté client, configurez un .ssh/configafin que vous puissiez taper ssh subdomainpour qu'il se connecte avec la bonne clé. Côté serveur, chaque clé publique doit authorized_keyscommencer par les mots environment="DOMAIN=subdomain". Côté serveur, créez également un .ssh/rcfichier qui sera enregistré dans le bon répertoire en fonction de la DOMAINvariable d'environnement. Cela nécessite que le serveur soit configuré avec PermitUserEnvironment yes.

Jenny D
la source
Je vous remercie! Cela ressemble à une bonne solution. Je vais essayer.
kapale
En fait, je voulais également suggérer la solution avec les clés SSH et, en particulier, exporter les fichiers ENV à partir de la machine d'origine de la connexion, mais il a demandé des répertoires HOME et pas seulement cddedans, donc je ne pense pas que ce soit une bonne solution.
Florin Asăvoaie
+1, l'idée des clés SSH est extrêmement intelligente et je ne savais pas que vous pouviez définir l'environnement par clé comme ça.
tgies
8

Ce n'est PAS possible car le protocole SSH n'envoie le nom d'hôte demandé nulle part dans les paquets.

Mon idée sur l'implémentation serait d'utiliser quelque chose comme OpenVZ pour isoler les sous-domaines et avoir une IP distincte pour chaque sous-domaine.

Florin Asăvoaie
la source
Ce serait une possibilité, mais c'est beaucoup trop d'efforts pour le cas où j'en ai besoin. Merci
kapale