![PAM 인증 중 SSH 인라인 명령과 SSH 세션 구별](https://linux55.com/image/161343/PAM%20%EC%9D%B8%EC%A6%9D%20%EC%A4%91%20SSH%20%EC%9D%B8%EB%9D%BC%EC%9D%B8%20%EB%AA%85%EB%A0%B9%EA%B3%BC%20SSH%20%EC%84%B8%EC%85%98%20%EA%B5%AC%EB%B3%84.png)
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
설정되어 있는지 확인한 다음 선택한 적절한 작업을 수행해야 합니다.