Домашній каталог SSH на піддомен


12

Мені цікаво, чи можна встановити різні домашні каталоги для одного і того ж користувача ssh для кожного піддомену.

Тож скажімо, що ви ввійдете у ssh myuser@example.comсвій домашній каталог: /www/httpdocs/

Якщо ви ввійдете у ssh myuser@subdomain1.example.comсвій домашній каталог: /www/subdomain1/

Якщо ви ввійдете у ssh myuser@subdomain2.example.comсвій домашній каталог: /www/subdomain2/

...

І так далі.

Відповіді:


19

SSH не може цього зробити, оскільки протокол SSH не включає запитуване ім'я хоста у виклик. (HTTP - це один з небагатьох протоколів, який включає в себе запитуване ім'я хоста, і саме це може бути використане для віртуального хостингу.) Ви можете замість цього спробувати ще кілька речей:

  • Ви можете створити окремих користувачів для кожного піддомену, але з тим самим UID, що і "основний" користувач. Користувачі субдоменів матимуть домашній каталог, встановлений у підкаталозі. Приклад:

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

  • Використовуйте модуль PAM для автентифікації на основі субдомену. Якщо такий модуль існує, я поняття не маю, що це було б, але, можливо, варто було б розібратися.

  • Використовуйте окремі ключі SSH для кожного піддомену. На стороні клієнта налаштуйте .ssh/configтак, щоб ви могли ввести ssh subdomainйого, щоб увійти в систему за допомогою правильної клавіші. На стороні сервера authorized_keysстворіть кожен відкритий ключ із слів environment="DOMAIN=subdomain". На стороні сервера також створіть .ssh/rcфайл, який буде CD у потрібний каталог на основі DOMAINзмінної середовища. Для цього потрібно налаштувати сервер PermitUserEnvironment yes.


Дякую! Звучить як хороше рішення. Я спробую.
капале

Насправді я хотів також запропонувати рішення за допомогою ключів SSH і, зокрема, експортувати ENV vars з машини з’єднання, але він запитав про те, чи є HOME каталоги, а не просто cdв них, тому я не вважав, що це гарне рішення.
Флорін Асвойае

+1, ідея SSH ключів надзвичайно розумна, і я не знав, що ти можеш встановити оточення для кожного ключа.
tgies

8

Це НЕ можливо, оскільки протокол SSH не надсилає запитуване ім'я хоста нікуди в пакетах.

Моєю ідеєю щодо цього було б використовувати щось на кшталт OpenVZ для ізоляції субдоменів та окремого IP для кожного піддомену.


Це було б можливим, але чи занадто багато зусиль для справи мені це потрібно. Дякую
kapale
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.