관리자의 모든 SSH 연결에서 일부 스크립트를 실행하고 싶습니다. 이를 위해 다음 줄을 추가했습니다 sshd_config
.
Match User admin
ForceCommand /etc/my_script.sh
스크립트는 관리자 사용자의 모든 SSH 연결에서 실행됩니다. 하지만 이제 SCP/SFTP는 허용되지 않나요? SSH에만 유효합니다. SSH, SCP 및 SFTP 액세스가 필요합니다.
my_script.sh:
#!/bin/sh
ip=$(echo $SSH_CONNECTION | awk '{print $3}')
if [ "$ip" == "192.168.200.101" ]; then
echo -ne "Detected ssh connection over USB... \n"
echo -n "-----------------------------------------\n"
sudo -s . /etc/my_script2.sh
else
echo -ne " continuing user login ...\n "
exec "/sbin/console.sh"`
fi
답변1
SCP 또는 SFTP 프로토콜을 사용하는 경우 SSH 서버는 SCP/SFTP 서버 애플리케이션을 실행해야 합니다. 너처럼 무조건힘 console.sh
, 당신은 SCP/SFTP를 깨뜨렸습니다.
SSH_ORIGINAL_COMMAND
클라이언트가 SFTP/SCP를 사용하고 허용할지 여부를 감지하려면 변수를 평가해야 합니다 .
일반 SSH 터미널 연결을 사용하여 스크립트를 실행하고 SFTP, SCP를 허용하려는 경우그리고여전히 무작위 명령 실행을 허용하는 솔루션은 SSH_ORIGINAL_COMMAND
스크립트에서 (비)비어 있는지 테스트하는 것입니다. 기본 솔루션 - 스크립트 상단에 다음을 입력하세요.
if [[ $SSH_ORIGINAL_COMMAND ]]; then
eval "$SSH_ORIGINAL_COMMAND"
exit
fi
(테스트되지 않음 + 저는 쉘 전문가가 아닙니다. 더 좋고 안전한 솔루션이 있을 수 있습니다)
좀 더 기술적인 세부 사항이 포함된 다소 관련된 질문입니다.
원활한 SFTP 터널/점프 박스