저는 컨테이너에서 일부 독립 실행형 애플리케이션을 실행하는 프로젝트를 진행 중입니다. SSH를 통해 특정 사람들에게 특정 컨테이너에 대한 액세스 권한을 부여하고 싶습니다. 지금까지 다음을 추가하여 작동하게 만들 수 있었습니다 /etc/ssh/sshd_config
.
Match User tester
ForceCommand docker exec -it mycontainer /bin/sh
AuthorizedKeysFile /opt/tester_keys
tester
이 작업은 사용자가 호스트 운영 체제에 존재하고 실행 권한이 있는 한 작동합니다 docker exec
. Match User
호스트 OS에 존재하지 않는 사용자를 입력 하면 작동하지 않습니다.
Match User nottester
ForceCommand docker exec -it nottestercontainer /bin/sh
AuthorizedKeysFile /opt/nottester_keys
내가 얻는 로그에 Invalid user nottester from xxx.xxx.xxx.xxx port 35703
.
sshd
인증된 키만 사용하여 인증하는 방법이 있나요 ?
호스트 운영 체제는 Ubuntu 22.04 LTS 서버입니다.
결국 나는 다음을 선호했습니다.
nottester
사용자가 서버에 연결- 제공된 인증 액세스를 사용하세요.
AuthorizedKeysFile
ForceCommand
접근이 허용되면 해당 작업을 수행할 수 있는 권한이 있는 사용자로 실행 됩니다.container_admin
이 작업을 수행할 수 있습니까 sshd
? 아니면 이 문제를 처리하기 위해 다른 작업이 필요합니까?
답변1
SSH 서비스에는 인증을 위해 시스템에 알려진 사용자 계정이 필요합니다. 협상할 수 없습니다: 대상 계정~ 해야 하다원격 시스템에 존재합니다. 귀하의 예에서는 nottester
.
이제 요구 사항을 다시 살펴보겠습니다.
- 사용자가 nottester로 서버에 연결합니다.
- 제공된 AuthorizedKeysFile을 사용하여 액세스를 확인하세요.
- 액세스 권한이 부여되면 ForceCommand는 컨테이너_admin 사용자로 실행됩니다.
클라이언트 측에서 nottester
연결할 사용자 계정을 지정합니다.
ssh nottester@remoteserver ...
또는 클라이언트 ~/.ssh/ssh_config
구성/기본 설정 파일에 다음을 추가하세요.
Host remoteserver
User notttester
IdentityFile my_privatekey_for_remoteserver_ed25519.key
이렇게 하면 사용자 계정을 기억할 필요가 없습니다.
ssh remoteserver
서버 측에서는 이 사용자 계정의 연결과 강제 명령을 허용하도록 설정한 것으로 보입니다.