Назад | Перейти на главную страницу

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

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

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

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

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

...

И так далее.

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 не отправляет запрошенное имя хоста нигде в пакетах.

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