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 [email protected]się do katalogu domowego: /www/httpdocs/

Jeśli zalogujesz się w ssh [email protected]swoim katalogu domowym będzie: /www/subdomain1/

Jeśli zalogujesz się w ssh [email protected]swoim katalogu domowym będzie: /www/subdomain2/

...

I tak dalej.

kapale
źródło

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.

Jenny D.
źródło
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.

Florin Asăvoaie
źródło
Byłoby to możliwe, ale jest to zbyt wielki wysiłek w przypadku, gdy tego potrzebuję. Dziękuję
kapale