Мне интересно, можно ли установить разные домашние каталоги для одного и того же пользователя 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-адреса для каждого поддомена.