원격 클라이언트의 특정 사용자가 서버에서 특정 명령을 실행할 수 있도록 내 서버 중 하나에 SSH 데몬을 구성하고 싶습니다. 특정 공개 키로 식별되는 각 사용자는 자신에게 특정한 명령을 실행할 수 있어야 합니다.
일반적으로 이를 수행하는 데는 많은 옵션이 있는 것으로 보이며 그 중 세 가지는 다음과 같습니다.
ForceCommand ...
insshd_config
: 각 사용자(공개 키)가 다른 명령을 실행해야 하기 때문에 제 경우에는 유연성이 충분하지 않습니다.command="..."
in : 각 사용자가 해당 서버의 홈 디렉터리에 별도의 파일을 갖고 있어 각 사용자가 자신만의 별도 명령을 실행할 수 있기authorized_keys
때문에 이는 내 상황에 매우 적합합니다 .authorized_keys
하지만 이 접근 방식에 대한 이해 문제가 있어 아래에 자세히 설명된 질문으로 연결됩니다.방법
/usr/lib/restricted-ssh-commands
: 이 방법은 사용자당 하나의 명령만 실행하면 되므로 내 사용 사례에는 약간 과잉입니다. 또한 이 방법에 사용되는 정규식은 보안 위험을 초래하므로 매우 신중하게 설계해야 합니다.
위에서 언급했듯이 저는 두 번째 접근 방식을 선택하고 싶습니다. 그러나 내가 읽은 모든 튜토리얼에는 (예를 들어이것) 파일 command=...
에 옵션을 추가하는 것뿐만 아니라 다음과 같은 옵션도 더 추가 해야 한다는 점이 강조되었습니다 .authorized_keys
command="/bin/foo bar baz",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa ...
/etc/ssh/sshd_config
이제 (시스템 전체에 중요한 데몬 옵션을 모두 구성했습니다)와 파일의 옵션 authorized_keys
사이의 관계 가 걱정됩니다 .
나는 이것이 나에게 두 가지 선택보다 우선한다는 man authorized_keys
인상을 준다는 것을 읽었습니다 . 그러나 ;에 없지만 ; 에 있는 옵션에 어떤 일이 발생하는지 명시적으로 명시되어 있지 않습니다(제가 놓친 경우 제외) . 그것들을 빼앗길 것인가 ?authorized_keys
sshd_config
authorized_keys
sshd_config
sshd_config
실제 예를 들자면, no-x11-forwarding
그렇습니다. 우리는 에 있을 수 있습니다(내가 읽은 모든 튜토리얼에 따르면) authorized_keys
. 하지만 저는 이미 X11Forwarding no
에 있습니다 . 그러면 sshd_config
내가 떠나면 no-x11-forwarding
어떻게 될까요 authorized_keys
?
IMHO authorized_keys
모든 파일에 모든 관련 옵션을 포함해야 한다는 것은 약간 어리석은 일이지만, 제가 접한 모든 튜토리얼에서는 이렇게 해야 한다고 강조합니다.
누구든지 이것에 대해 밝힐 수 있다면 감사하겠습니다.
답변1
충분히 새로운 openssh 서버(>= 버전)를 사용하는 경우7.2restrict
) 그러면 옵션이 제공됩니다.authorized_keys
문서:
한계
모든 제한 사항 활성화이는 포트, 프록시 및 X11 전달을 비활성화하고 PTY 할당 및 실행을 비활성화합니다~/.ssh/rc
. 만약에향후 제한된 기능을 추가하세요.authorized_keys
세트의 파일에 포함됩니다.
그러면 가능한 모든 제한 사항이 적용되고 앞으로도 계속 적용된다는 점을 확신할 수 있습니다. 필요에 따라 나중에 추가 활성화 매개변수를 추가해야 할 수도 있습니다 restrict
(예: pty
대화형 사용을 위해).