SSH 및 제한된 셸을 통한 원격 명령

SSH 및 제한된 셸을 통한 원격 명령

저는 SSH 서버에서 작업하고 있는데 사용자가 하길 바라는 유일한 일은

ssh user@ip cat somefile

내 위협 완화 계획의 일부는 사용자에게 제한된 bash를 제공하는 것입니다.

예제를 보았지만 chsh rbash내 서버에서 rbash를 찾을 수 없습니다. 그래서 "rbash"라는 스크립트를 만들었습니다.

    #!/bin/bash
    bash -r

bash -r은 제한된 쉘을 시작하는 옵션이므로 이 스크립트를 /bin에 넣었습니다. 그러다가 도망갔어chsh user -s /bin/rbash

이제 ssh user@ip서버에 들어가서 제한된 셸에 있는 자신을 찾을 수 있지만, 프로세스를 ssh하려고 하면 ssh user@ip cat somefile멈추게 됩니다.debug1: sending command: cat somefile

내가 이 문제를 올바른 방식으로 처리하고 있나요? ssh를 통해 로그인할 때 cat somefile이 명령을 원격으로 작동시키고 제한된 셸을 유지하려면 어떻게 해야 합니까 ?

관련될 수 있는 기타 정보

  • 운영 체제Fedora 29
  • SSH 인증 방법 공개 키

답변1

rbash 생성

매뉴얼 페이지에서 맨 아래로 스크롤하면 bash다음 섹션을 찾을 수 있습니다 RESTRICTED SHELL.

bash가 rbash라는 이름으로 시작되거나 호출 시 -r 옵션이 제공되는 경우 쉘이 제한됩니다.

"rbash"라는 이름으로 bash를 시작하려면 심볼릭 링크를 생성할 수 있습니다 ln -s /bin/bash /bin/rbash.

사용자 제한cat somefile

에서 man authorized_keys:

command="command"
    Specifies that the command is executed whenever this key is used for
    authentication.

Authorized_key 파일을 조정할 수 있습니다.

command="cat somefile" KEY_TYPE KEY COMMENT

이제 이 사용자 키 조합은 작동합니다 cat somefile.

래퍼가 작동하지 않는 이유

스크립트가 실행되지만 bash -r명령은 실행되지 않습니다 cat somefile. set -xe스크립트를 입력하면 어떤 일이 발생하는지 확인할 수 있습니다 .

#!/bin/bash
set -xe
bash -xer

이는 bash정체된 것이 아니라 입력을 기다리고 있으며 두 개의 쉘을 생성했음을 보여줍니다. 프롬프트는 없지만 다음 명령을 실행할 수 있습니다.

$ ssh user@ip cat somefile
+ /bin/bash -r

ls 
+ ls
somefile
exit
+ exit
exit
+ exit
$

이 셸에 명령을 파이프할 수 있지만 이는 좋은 솔루션이 아닙니다.

ssh user@ip <<< 'cat somefile'

관련 정보