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
환경 변수 에서 사용할 수 있으므로 실제로 스크립트를 사용하여 입력을 처리하고 영리한 작업을 수행 할 수 있음을 알았습니다 .