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

12

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

Допустим, вы войдете в ssh myuser@example.comсвой домашний каталог: /www/httpdocs/

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

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

...

И так далее.

kapale
источник

Ответы:

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файл, который перейдет в нужный каталог на основе DOMAINпеременной среды. Это требует, чтобы сервер был настроен с PermitUserEnvironment yes.

Дженни Д
источник
Спасибо! Похоже, хорошее решение. Я попробую.
Капале
Я на самом деле хотел также предложить решение с ключами SSH и, особенно, экспортировать переменные ENV с компьютера источника соединения, но он спросил о наличии каталогов HOME, а не только cdв них, поэтому я не думал, что это хорошее решение.
Florin Asăvoaie
+1, идея ключей SSH чрезвычайно умна, и я не знал, что вы можете настроить среду для каждого ключа таким образом.
tgies
8

Это НЕ возможно, потому что протокол SSH не отправляет запрошенное имя хоста нигде в пакетах.

Моя идея по реализации этого состояла бы в том, чтобы использовать что-то вроде OpenVZ для изоляции поддоменов и иметь отдельный IP для каждого поддомена.

Florin Asăvoaie
источник
Было бы возможно, но это слишком много усилий для случая, когда мне это нужно. Спасибо
Капале