Diretório inicial SSH por subdomínio

12

Gostaria de saber se é possível definir diretórios pessoais diferentes para o mesmo usuário ssh para cada subdomínio.

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

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

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

...

E assim por diante.

Kapale
fonte

Respostas:

19

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

  • Você pode criar usuários separados para cada subdomínio, mas com o mesmo UID do usuário "principal". Os usuários do subdomínio teriam seu diretório inicial definido 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 esse módulo existe, não tenho idéia do que seria, mas pode valer a pena investigar.

  • Use chaves SSH separadas para cada subdomínio. No lado do cliente, configure um .ssh/configpara que você possa digitar ssh subdomainpara fazer login com a chave correta. No lado do servidor, faça com que cada chave pública authorized_keyscomece com as palavras environment="DOMAIN=subdomain". No lado do servidor, também crie um .ssh/rcarquivo que será copiado para o diretório certo com base na DOMAINvariável de ambiente. Isso requer que o servidor esteja configurado com PermitUserEnvironment yes.

Jenny D
fonte
Obrigado! Parece uma boa solução. Vou dar uma chance.
kapale
Na verdade, eu também queria sugerir a solução com as chaves SSH e, principalmente, exportar vars ENV da máquina de origem da conexão, mas ele perguntou sobre os diretórios HOME e não apenas cdneles, então não achei que fosse uma boa solução.
Florin Asăvoaie
+1, a ideia de chaves SSH é extremamente inteligente e eu não sabia que era possível definir o ambiente por chave assim.
tgies
8

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

Minha idéia ao implementar isso seria usar algo como o OpenVZ para isolar os subdomínios e ter um IP separado para cada subdomínio.

Florin Asăvoaie
fonte
Seria uma possibilidade, mas é muito esforço para o caso em que preciso disso. Obrigado
kapale