SSH-Ausgangsverzeichnis pro Subdomain


12

Ich frage mich, ob es möglich ist, für jeden Subdomain unterschiedliche Home-Verzeichnisse für denselben SSH-Benutzer festzulegen.

Nehmen wir also an, Sie melden sich mit ssh myuser@example.comIhrem Home-Verzeichnis an: /www/httpdocs/

Wenn Sie sich mit ssh myuser@subdomain1.example.comIhrem Home-Verzeichnis anmelden, geschieht Folgendes: /www/subdomain1/

Wenn Sie sich mit ssh myuser@subdomain2.example.comIhrem Home-Verzeichnis anmelden, geschieht Folgendes: /www/subdomain2/

...

Und so weiter.

Antworten:


19

SSH kann das nicht, da das SSH-Protokoll den angeforderten Hostnamen nicht in den Aufruf einbezieht. (HTTP ist eines der wenigen Protokolle, das den angeforderten Hostnamen enthält. So kann es für virtuelles Hosting verwendet werden.) Stattdessen können Sie einige andere Dinge versuchen:

  • Sie können separate Benutzer für jede Unterdomäne erstellen, jedoch mit derselben UID wie der Hauptbenutzer. Die Subdomain-Benutzer würden ihr Home-Verzeichnis auf das Unterverzeichnis setzen. Beispiel:

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

  • Verwenden Sie ein PAM-Modul, um sich anhand der Unterdomäne zu authentifizieren. Wenn ein solches Modul existiert, habe ich keine Ahnung, was es sein würde, aber es könnte sich lohnen, es zu untersuchen.

  • Verwenden Sie für jede Unterdomäne separate SSH-Schlüssel. Richten Sie auf der Clientseite eine ein, .ssh/configdamit Sie ssh subdomainsie mit dem richtigen Schlüssel anmelden können. Auf der Serverseite muss jeder öffentliche Schlüssel authorized_keysmit den Worten beginnen environment="DOMAIN=subdomain". Erstellen Sie auf der Serverseite auch eine .ssh/rcDatei, die auf der Grundlage der DOMAINUmgebungsvariablen in das richtige Verzeichnis kopiert wird. Dazu muss der Server mit konfiguriert sein PermitUserEnvironment yes.


Vielen Dank! Klingt nach einer guten Lösung. Ich werde es versuchen.
Kapale

Eigentlich wollte ich auch die Lösung mit den SSH-Schlüsseln vorschlagen und insbesondere ENV-Variablen vom Verbindungsursprungscomputer exportieren, aber er fragte nach HOME-Verzeichnissen und nicht nur danach cd, weshalb ich es nicht für eine gute Lösung hielt.
Florin Asăvoaie

+1, die Idee mit den SSH-Schlüsseln ist extrem clever und ich wusste nicht, dass man die Umgebung pro Schlüssel so einstellen kann.
Tgies

8

Dies ist NICHT möglich, da das SSH-Protokoll den angeforderten Hostnamen nirgendwo in den Paketen sendet.

Meine Idee bei der Implementierung wäre, OpenVZ zu verwenden, um die Subdomains zu isolieren und für jede Subdomain eine eigene IP zu haben.


Wäre eine Möglichkeit, ist aber viel zu viel Aufwand für den Fall, dass ich das brauche. Vielen Dank
kapale
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.