У меня есть купленный виртуальный хостинг, где крутиться мой сайт. Я захожу по внешнему ip по SSH, вбиваю логин/пароль, предоставленные мне хостером и попадаю на голую ОС, где заведен только мой пользователь и где лично под меня развернуто веб-окружение.
Как у хостера это реализовано технически? Под каждого пользователя создается виртуальная машина? С помощью чего это делается?
Как при обращении по внешнему ip меня перекидывает на нужную виртуальную машинку?
Хостер покупает автономную систему, роутит на своё оборудование. На оборудовании направляет пул IP на сервер, сервер делит на виртуальные машины ( смотреть системы виртуализации - OpenVZ, KVM, Xen, Hyper-V ), в конфиге на хост машине заводит для каждой виртуалки свой внешний IP и устанавливает в виртуальную машину ось.
В случае виртуального хостинга ( не VPS ) на сервере окружение одно и то же ( nginx , apache, php разных версий ) для Вашего аккаунта создается аккаунт с ssh ( в /etc/passwd прописывается в последнем разделе шелл, а не nologin или прочее ) и Вы попадаете в свой аккаунт на сервере.
По-разному настраивают. Может быть chroot, я например использую lshell, а могут и ничего особо не настраивать. Пример Lshell. Это в случае вирт. хостинга.
В вашем вопросе не понятно, как голая ОС может быть при вирт. хостинге.