태그 보관물: ssh

ssh

사용자에게 전체 로그인 액세스 권한을 부여하지 않고 단일 명령을 허용하도록 SSHd를 어떻게 구성합니까? rpc 192.168.12.1 PTY allocation

SSH를 통해 원격 명령을 호출하는 가장 좋은 방법을 찾고 있습니다. 사용자 ‘rpcall’을 생성하고 새 인증서를 생성 한 후 authorized_keys를 채 웁니다. 좀 더 안전하게

from="ip",no-agent-forwarding,no-X11-forwarding,no-port-forwarding,no-pty ssh-rsa ......

이제 사용자 rpcall은 터미널에 로그인 할 수 없습니다

ssh -l rpc 192.168.12.1
PTY allocation request failed on channel 0

그러나 모든 명령을 실행할 수 있습니다

ssh -l rpc 192.168.12.1 cat /etc/passwd

명령 실행을 하나의 처리 스크립트로만 제한 할 수있는 솔루션이 있습니까? 예를 들어 /home/rpcall/bin/command.sh

이 사용자를 위해 bash 쉘을 설정하고 .bashrc force run 처리 스크립트를 사용했지만 ssh 호출에서 매개 변수를 전달하는 방법을 모르겠습니다.

rpcall 사용자를위한 .bashrc

/home/rpcall/bin/command.sh $params1 $params2
exit

다른 컴퓨터에서 ssh 호출

ssh -l rpcall 192.168.12.1 "param1" "param2"



답변

certified_keys 파일을 사용하여 명령을 제한 할 수 있습니다. command="/home/rpcall/bin/command.sh"authorized_keys 파일에서 키 앞에 두면 사용자는 연결할 때만 해당 명령을 실행합니다.

authorized_keys에 대한 매뉴얼 페이지를 확인하십시오. 이것은 해당 매뉴얼 페이지에서 가져온 것입니다.

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any) is
         ignored.  The command is run on a pty if the client requests a
         pty; otherwise it is run without a tty.  If an 8-bit clean chan-
         nel is required, one must not request a pty or should specify
         no-pty.  A quote may be included in the command by quoting it
         with a backslash.  This option might be useful to restrict cer-
         tain public keys to perform just a specific operation.  An exam-
         ple might be a key that permits remote backups but nothing else.
         Note that the client may specify TCP and/or X11 forwarding unless
         they are explicitly prohibited.  The command originally supplied
         by the client is available in the SSH_ORIGINAL_COMMAND environ-
         ment variable.  Note that this option applies to shell, command
         or subsystem execution.

둘 이상의 명령이 필요한 경우 기본적으로 여러 키 세트를 설정하고 다른 키를 사용하여 다른 명령을 제공해야합니다.

편집 : 방금 원래 명령을 SSH_ORIGINAL_COMMAND환경 변수 에서 사용할 수 있으므로 실제로 스크립트를 사용하여 입력을 처리하고 영리한 작업을 수행 할 수 있음을 알았습니다 .


답변