我想知道是否有可能为每个子域的同一个ssh用户设置不同的主目录。
假设您使用ssh [email protected]login,您的主目录将为: /www/httpdocs/
如果您使用ssh [email protected]login,您的主目录将为: /www/subdomain1/
如果您使用ssh [email protected]login,您的主目录将为: /www/subdomain2/
…
等等。
SSH不能这样做,因为SSH协议在调用中不包含请求的主机名。 (HTTP是less数几个包含请求主机名的协议之一,它可以用于虚拟主机。)还有一些其他的东西你可以尝试:
您可以为每个子域创build单独的用户,但使用与“主”用户相同的UID。 子域用户将其主目录设置为子目录。 例:
useradd -o -u 4711 -d /var/www/subdomain1 subdomain1
使用PAM模块根据子域进行身份validation。 如果存在这样一个模块,我不知道它会是什么,但它可能是值得研究的。
为每个子域使用单独的SSH密钥。 在客户端,build立一个.ssh/config以便你可以inputssh subdomain来使用正确的密钥进行login。 在服务器端,使authorized_keys每个公钥以词语environment="DOMAIN=subdomain"开头。 在服务器端,还会生成一个.ssh/rc文件,该文件将根据DOMAIN环境variables切换到正确的目录。 这要求服务器configurationPermitUserEnvironment yes 。
这是不可能的,因为SSH协议不会在数据包的任何地方发送请求的主机名。
我的想法是使用像OpenVZ这样的东西来隔离子域,并为每个子域分配一个IP。