서브 도메인 당 SSH 홈 디렉토리


12

각 하위 도메인에 대해 동일한 ssh 사용자에 대해 다른 홈 디렉토리를 설정할 수 있는지 궁금합니다.

따라서 ssh myuser@example.com홈 디렉토리로 로그인한다고 가정 해보십시오. /www/httpdocs/

ssh myuser@subdomain1.example.com홈 디렉토리로 로그인하면 다음과 같습니다. /www/subdomain1/

ssh myuser@subdomain2.example.com홈 디렉토리로 로그인하면 다음과 같습니다. /www/subdomain2/

...

등등.

답변:


19

SSH 프로토콜은 호출에 요청 된 호스트 이름을 포함하지 않기 때문에 SSH를 수행 할 수 없습니다. HTTP는 요청 된 호스트 이름을 포함하는 몇 가지 프로토콜 중 하나이며, 이는 가상 호스팅에 사용되는 방법입니다. 대신 시도해 볼 수있는 몇 가지 다른 방법이 있습니다.

  • 각 하위 도메인에 대해 별도의 사용자를 만들 수 있지만 "주"사용자와 동일한 UID를 사용합니다. 하위 도메인 사용자는 홈 디렉토리를 하위 디렉토리로 설정합니다. 예:

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

  • PAM 모듈을 사용하여 하위 도메인을 기반으로 인증하십시오. 그러한 모듈이 존재한다면 나는 그것이 무엇인지 알지 못하지만 조사해 볼 가치가 있습니다.

  • 각 하위 도메인마다 별도의 SSH 키를 사용하십시오. 클라이언트 측 에서 올바른 키를 사용하여 로그인하도록 .ssh/config입력 할 수 있도록 설정 ssh subdomain하십시오. 서버 측에서 각 공개 키 authorized_keys가 단어 로 시작하도록하십시오 environment="DOMAIN=subdomain". 서버 측에서도 환경 변수 .ssh/rc에 따라 올바른 디렉토리로 cd 할 파일을 만듭니다 DOMAIN. 이를 위해서는 서버를로 구성해야 PermitUserEnvironment yes합니다.


감사합니다! 좋은 해결책 인 것 같습니다. 시도해 볼게요.
— kapale

실제로 SSH 키를 사용하여 솔루션을 제안하고 특히 연결 원본 시스템에서 ENV 변수를 내보내는 것이 좋았지 만 HOME 디렉토리가 있는지 물어 보았을뿐 아니라 좋은 디렉토리 cd라고 생각하지 않았습니다.
— Florin Asăvoaie

+1, SSH 키 아이디어는 매우 영리하며 키별로 환경을 설정할 수 있다는 것을 몰랐습니다.
— tgies

8

SSH 프로토콜은 요청 된 호스트 이름을 패킷의 어느 곳으로도 보내지 않기 때문에 불가능합니다.

이것을 구현하는 것에 대한 나의 생각은 OpenVZ와 같은 것을 사용하여 하위 도메인을 분리하고 각 하위 도메인에 대해 별도의 IP를 갖는 것입니다.


가능성이 있지만 이것이 필요한 경우에는 너무 많은 노력입니다. 감사합니다
— kapale
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.