Katalog domowy SSH według subdomeny


12

Zastanawiam się, czy możliwe jest ustawienie różnych katalogów domowych dla tego samego użytkownika ssh dla każdej subdomeny.

Powiedzmy, że logujesz ssh myuser@example.comsię do katalogu domowego: /www/httpdocs/

Jeśli zalogujesz się w ssh myuser@subdomain1.example.comswoim katalogu domowym będzie: /www/subdomain1/

Jeśli zalogujesz się w ssh myuser@subdomain2.example.comswoim katalogu domowym będzie: /www/subdomain2/

...

I tak dalej.

Odpowiedzi:


19

SSH nie może tego zrobić, ponieważ protokół SSH nie zawiera żądanej nazwy hosta w wywołaniu. (HTTP jest jednym z niewielu protokołów, które zawierają żądaną nazwę hosta, i tak można go wykorzystać do wirtualnego hostingu.) Zamiast tego możesz spróbować kilku innych rzeczy:

  • Możesz utworzyć osobnych użytkowników dla każdej subdomeny, ale z tym samym UID, co „główny” użytkownik. Użytkownicy subdomen mieliby swój katalog domowy ustawiony na podkatalog. Przykład:

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

  • Użyj modułu PAM do uwierzytelnienia na podstawie subdomeny. Jeśli taki moduł istnieje, nie mam pojęcia, co by to było, ale warto się temu przyjrzeć.

  • Użyj osobnych kluczy SSH dla każdej subdomeny. Po stronie klienta skonfiguruj .ssh/configtak, aby można było pisać, ssh subdomainaby logował się przy użyciu prawidłowego klucza. Po stronie serwera każdy klucz publiczny powinien authorized_keyszaczynać się od słów environment="DOMAIN=subdomain". Po stronie serwera utwórz również .ssh/rcplik, który przejdzie do odpowiedniego katalogu na podstawie DOMAINzmiennej środowiskowej. Wymaga to skonfigurowania serwera PermitUserEnvironment yes.


Dziękuję Ci! Brzmi jak dobre rozwiązanie. Dam temu szansę.
— kapale

Tak naprawdę chciałem również zasugerować rozwiązanie za pomocą kluczy SSH, a zwłaszcza eksportować zmienne ENV z maszyny źródłowej połączenia, ale zapytał o katalogi HOME, a nie tylko cddo nich, więc nie sądziłem, że to dobre rozwiązanie.
— Florin Asăvoaie

+1, pomysł na klucze SSH jest bardzo sprytny i nie wiedziałem, że możesz ustawić środowisko dla tego klucza.
— tgies

8

Nie jest to możliwe, ponieważ protokół SSH nie wysyła żądanej nazwy hosta nigdzie w pakietach.

Moim pomysłem na wdrożenie tego byłoby użycie czegoś takiego jak OpenVZ do izolacji subdomen i posiadania oddzielnego adresu IP dla każdej subdomeny.


Byłoby to możliwe, ale jest to zbyt wielki wysiłek w przypadku, gdy tego potrzebuję. Dziękuję
— kapale
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.