모든 사용자에게 SSH

모든 사용자에게 SSH

저는 컨테이너에서 일부 독립 실행형 애플리케이션을 실행하는 프로젝트를 진행 중입니다. 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 서버입니다.

결국 나는 다음을 선호했습니다.

  1. nottester사용자가 서버에 연결
  2. 제공된 인증 액세스를 사용하세요.AuthorizedKeysFile
  3. ForceCommand접근이 허용되면 해당 작업을 수행할 수 있는 권한이 있는 사용자로 실행 됩니다.container_admin

이 작업을 수행할 수 있습니까 sshd? 아니면 이 문제를 처리하기 위해 다른 작업이 필요합니까?

답변1

SSH 서비스에는 인증을 위해 시스템에 알려진 사용자 계정이 필요합니다. 협상할 수 없습니다: 대상 계정~ 해야 하다원격 시스템에 존재합니다. 귀하의 예에서는 nottester.

이제 요구 사항을 다시 살펴보겠습니다.

  1. 사용자가 nottester로 서버에 연결합니다.
  2. 제공된 AuthorizedKeysFile을 사용하여 액세스를 확인하세요.
  3. 액세스 권한이 부여되면 ForceCommand는 컨테이너_admin 사용자로 실행됩니다.

클라이언트 측에서 nottester연결할 사용자 계정을 지정합니다.

ssh nottester@remoteserver ...

또는 클라이언트 ~/.ssh/ssh_config구성/기본 설정 파일에 다음을 추가하세요.

Host remoteserver
    User notttester
    IdentityFile my_privatekey_for_remoteserver_ed25519.key

이렇게 하면 사용자 계정을 기억할 필요가 없습니다.

ssh remoteserver

서버 측에서는 이 사용자 계정의 연결과 강제 명령을 허용하도록 설정한 것으로 보입니다.

관련 정보