Answers:
SSH无法执行此操作,因为SSH协议未在呼叫中包含请求的主机名。(HTTP是确实包含所请求的主机名的少数协议之一,这就是它可以用于虚拟主机的方式。)您可以尝试其他几种方法:
您可以为每个子域创建单独的用户,但具有与“主要”用户相同的UID。子域用户会将其主目录设置为该子目录。例:
useradd -o -u 4711 -d /var/www/subdomain1 subdomain1
使用PAM模块基于子域进行身份验证。如果存在这样的模块,我不知道它将是什么,但是可能值得研究。
为每个子域使用单独的SSH密钥。在客户端上,设置a,.ssh/config
以便您键入ssh subdomain
以使其使用正确的密钥登录。在服务器端,每个公共密钥都以authorized_keys
开头environment="DOMAIN=subdomain"
。在服务器端,还要.ssh/rc
根据DOMAIN
环境变量制作一个将cd到正确目录的文件。这需要使用配置服务器PermitUserEnvironment yes
。
cd
进入目录,因此我认为这不是一个好的解决方案。
这是不可能的,因为SSH协议不会在数据包中的任何位置发送请求的主机名。
我实现此目标的想法是使用类似OpenVZ的方法来隔离子域,并为每个子域都有一个单独的IP。