diretório inicial do SSH por subdomínio

12

Eu estou querendo saber se é possível definir diretórios home diferentes para o mesmo usuário ssh para cada subdomínio.

Então, digamos que você faça login com ssh [email protected] seu diretório inicial será: /www/httpdocs/

Se você fizer login com ssh [email protected] , seu diretório inicial será: /www/subdomain1/

Se você fizer login com ssh [email protected] , seu diretório inicial será: /www/subdomain2/

...

E assim por diante.

    
por kapale 16.04.2014 / 11:17

2 respostas

19

O SSH não pode fazer isso porque o protocolo SSH não inclui o nome do host solicitado na chamada. (O HTTP é um dos poucos protocolos que incluem o nome do host solicitado, que é como ele pode ser usado para hospedagem virtual.) Há algumas outras coisas que você pode tentar:

  • Você pode criar usuários separados para cada subdomínio, mas com o mesmo UID que o usuário "principal". Os usuários de subdomínio teriam seu diretório inicial configurado para o subdiretório. Exemplo:

    useradd -o -u 4711 -d /var/www/subdomain1 subdomain1

  • Use um módulo PAM para autenticar com base no subdomínio. Se tal módulo existe, não tenho ideia do que seria, mas pode valer a pena investigar.

  • Use chaves SSH separadas para cada subdomínio. No lado do cliente, configure um .ssh/config para que você possa digitar ssh subdomain para fazer login com a chave correta. No lado do servidor, cada chave pública em authorized_keys começa com as palavras environment="DOMAIN=subdomain" . No lado do servidor, crie também um arquivo .ssh/rc que será enviado para o diretório correto com base na variável de ambiente DOMAIN . Isso requer que o servidor seja configurado com PermitUserEnvironment yes .

por 16.04.2014 / 11:58
9

Isso NÃO é possível porque o protocolo SSH não envia o nome do host solicitado em nenhum lugar dos pacotes.

Minha ideia de implementar isso seria usar algo como o OpenVZ para isolar os subdomínios e ter um IP separado para cada subdomínio.

    
por 16.04.2014 / 11:26