Directorio de inicio de SSH por subdominio

12

Me pregunto si es posible establecer diferentes directorios de inicio para el mismo usuario ssh para cada subdominio.

Entonces, digamos que iniciar sesión con ssh [email protected]su directorio de inicio será: /www/httpdocs/

Si inicia sesión con ssh [email protected]su directorio personal será: /www/subdomain1/

Si inicia sesión con ssh [email protected]su directorio personal será: /www/subdomain2/

...

Y así.

kapale
fuente

Respuestas:

19

SSH no puede hacer eso porque el protocolo SSH no incluye el nombre de host solicitado en la llamada. (HTTP es uno de los pocos protocolos que incluye el nombre de host solicitado, que es cómo se puede usar para el alojamiento virtual). En su lugar, puede probar otras cosas:

  • Puede crear usuarios separados para cada subdominio, pero con el mismo UID que el usuario "principal". Los usuarios del subdominio tendrían su directorio de inicio establecido en el subdirectorio. Ejemplo:

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

  • Use un módulo PAM para autenticar en función del subdominio. Si existe tal módulo, no tengo idea de lo que sería, pero valdría la pena analizarlo.

  • Use claves SSH separadas para cada subdominio. En el lado del cliente, configure una .ssh/configpara que pueda escribir ssh subdomainpara que inicie sesión con la clave correcta. En el lado del servidor, authorized_keyscomience cada clave pública con las palabras environment="DOMAIN=subdomain". En el lado del servidor, también cree un .ssh/rcarchivo que se cd en el directorio correcto basado en la DOMAINvariable de entorno. Esto requiere que el servidor esté configurado con PermitUserEnvironment yes.

Jenny D
fuente
¡Gracias! Suena como una buena solución. Lo probaré.
kapale
De hecho, también quería sugerir la solución con las claves SSH y, especialmente, exportar vars ENV desde la máquina de origen de la conexión, pero me preguntó sobre tener directorios HOME y no solo cden ellos, así que no pensé que fuera una buena solución.
Florin Asăvoaie
+1, la idea de las claves SSH es extremadamente inteligente y no sabía que podría configurar el entorno por clave de esa manera.
tgies
8

Esto NO es posible porque el protocolo SSH no envía el nombre de host solicitado a ninguna parte de los paquetes.

Mi idea al implementar esto sería usar algo como OpenVZ para aislar los subdominios y tener una IP separada para cada subdominio.

Florin Asăvoaie
fuente
Sería una posibilidad, pero es demasiado esfuerzo para el caso, necesito esto. Gracias
kapale