每个子域的 SSH 主目录

kap*_*ale 12 ssh home-directory subdomain

我想知道是否可以为每个子域的同一个 ssh 用户设置不同的主目录。

因此,假设您使用ssh myuser@example.com主目录登录将是: /www/httpdocs/

如果您使用ssh myuser@subdomain1.example.com主目录登录,则将是: /www/subdomain1/

如果您使用ssh myuser@subdomain2.example.com主目录登录,则将是: /www/subdomain2/

...

等等。

Jen*_*y D 19

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.


Flo*_*aie 8

这是不可能的,因为 SSH 协议不会在数据包中的任何地方发送请求的主机名。

我实现这个的想法是使用像 OpenVZ 这样的东西来隔离子域,并为每个子域设置一个单独的 IP。