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.