각 하위 도메인에 대해 동일한 ssh 사용자에 대해 다른 홈 디렉토리를 설정할 수 있는지 궁금합니다.
따라서 ssh myuser@example.com
홈 디렉토리로 로그인한다고 가정 해보십시오.
/www/httpdocs/
ssh myuser@subdomain1.example.com
홈 디렉토리로 로그인하면 다음과 같습니다.
/www/subdomain1/
ssh myuser@subdomain2.example.com
홈 디렉토리로 로그인하면 다음과 같습니다.
/www/subdomain2/
…
등등.
답변
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
합니다.
답변
SSH 프로토콜은 요청 된 호스트 이름을 패킷의 어느 곳으로도 보내지 않기 때문에 불가능합니다.
이것을 구현하는 것에 대한 나의 생각은 OpenVZ와 같은 것을 사용하여 하위 도메인을 분리하고 각 하위 도메인에 대해 별도의 IP를 갖는 것입니다.