답변:
아니요. "허용"명령이 아니라 "강제"명령 ( ForceCommand 옵션)입니다.
유일한 가능성은 다른 명령에 다른 키를 사용하거나에서 매개 변수를 읽는 것 stdin
입니다.
명령은 "강제"이므로 키당 하나의 명령 만 가질 수 있습니다.
그러나 랩퍼 스크립트를 사용할 수 있습니다. 호출 된 명령은 원래 명령 행을 환경 변수로 $SSH_ORIGINAL_COMMAND
가져와 평가할 수 있습니다.
예를 들어 ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
그런 다음에 참조 ~/.ssh/authorized_keys
로
command="/home/user/.ssh/allowed-commands.sh",…
위대한 SSH 인 O'Reilly 의 Secure Shell : The Definitive Guide ( 8 장)에는 다음과 같은 스크립트를 사용한 좋은 예가 있습니다.
#!/bin/sh
/bin/echo "Welcome!
Your choices are:
1 See today's date
2 See who's logged in
3 See current processes
q Quit"
/bin/echo "Your choice:"
read ans
while [ "$ans" != "q" ]
do
case "$ans" in
1)
/bin/date
;;
2)
/usr/bin/who
;;
3)
/usr/bin/top
;;
q)
/bin/echo "Goodbye"
exit 0
;;
*)
/bin/echo "Invalid choice '$ans': please try again"
;;
esac
/bin/echo "Your choice:"
read ans
done
exit 0
.authorized_keys
파일 에서 이것을 다음 과 같이 사용하십시오 :
command="/path/to/your/script.sh" <ssh-key>
...이 작업을 수행 할 때 이것을 제공합니다 ssh
.
Welcome!
Your choices are:
1 See today's date
2 See who's logged in
3 See current processes
q Quit
Your choice:
scp
되며 sftp
언젠가는 유용 할 수있는 다른 모든 항목이 있습니다.
command
일반적으로 옵션에 유효하지 않습니까?
다른 접근 방식은 예를 들어 주어진 사용자에 대해 제한된 쉘을 사용하거나 특정 디렉토리에있는 모든 파일 / 스크립트에 명령을 제한하는 래퍼를 사용하여 래퍼를 변경하지 않고 명령 목록을 보강 할 수 있습니다.
또 다른 기사에서는 허용되는 명령에 대한 명령 행 인수를 허용하지만 일반 표현식으로 표현 된 규칙으로이를 잠글 수있는 일반 스크립트에 대해 설명합니다.
이 예제 는 다음과 같이 표현됩니다.
command="only systemctl shutdown"
그리고이 내용으로 .onlyrules
파일을 만들 수 있습니다.
\:^systemctl restart cups$:{p;q}
\:^shutdown -r now$:{p;q}
이 '유일한'접근 방식의 장점은 각 사용자 및 상황에 대해 개별 스크립트를 작성할 필요가 없다는 것입니다.
ForcedCommand
SSH_ORIGINAL_COMMAND
(perman sshd
) 추가 되어 스크립트에서 사용 가능하다는 것을 분명히하는 것이 좋습니다. 또한 특정 패턴SSH_ORIGINAL_COMMAND
을 실행할 수있는 자동화 된 스크립트의 예를 제공 합니다. 참조 unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.html