PAM 인증 중 SSH 인라인 명령과 SSH 세션 구별

PAM 인증 중 SSH 인라인 명령과 SSH 세션 구별

SSH 사용자 인증 중에 SSH 세션과 SSH 인라인 명령을 구별할 수 있는 방법이 있습니까? 나는 tty를 확인하려고 시도했지만 두 경우 모두 나에게는 동일해 보입니다. 내 시나리오에서는 사용자가 (인증 중에) "ssh user@hostname 'some cmd'"를 실행하는 것을 방지하지만 사용자가 동일한 사용자 계정을 사용하여 SSH를 통해 로그인할 수 있도록 허용하는 방법이 필요합니다.

답변1

이는 PAM 인증 중에는 불가능합니다. pam에는 ssh에 전달된 명령에 대한 정보가 없습니다. SSH 서버만이 이러한 유형을 구별할 수 있습니다. 그러나 ssh에 명령 인수를 전달하지 않으면 내부적으로 사용자 셸(보통 bash)이 실행된다는 의미입니다.

muru가 제안한 다음을 사용하여 sshd_config설명하는 내용을 달성 할 수 있습니다.

Match testuser
  ForceCommand /bin/bash -il

이는 사용자가 ssh에 명령 인수를 지정하더라도 항상 사용자에 대해 대화형 쉘을 실행합니다. 다른 명령을 전달한 경우 일부 메시지를 표시하려면 bash 대신 호출될 간단한 스크립트를 작성하고 SSH_ORIGINAL_COMMAND설정되어 있는지 확인한 다음 선택한 적절한 작업을 수행해야 합니다.

관련 정보