이 질문은 다음과 관련이 있습니다.둘 다른이전에 Raspberry Pi를 모션 센서로 작동시키는 것에 대해 질문이 있었는데, 모션이 감지되면 더 강력한 서버로 SSH를 시도합니다(더 강력한 서버는 스크립트를 통해 추가 처리를 수행합니다). 이것이 내가 한 일입니다:
- Raspberry Pi에 Linux Sports 앱을 설치했습니다.
ssh-keygen
라즈베리 파이에서도 사용한 뒤, 라즈베리ssh-copy-id
파이가ssh
비밀번호를 입력하지 않고도 서버에 접속할 수 있도록 공개키를 좀 더 강력한 서버에 복사해 두곤 했습니다.motion.conf
파일 에는on_motion_detected
Raspberry Pi가 동작을 감지할 때 이벤트에 대한 줄이 있으며 해당 줄에는 다음과 같은 내용이 있습니다.SSH[이메일 보호됨]'/exec/일부/스크립트/여기'
그러나 더 강력한 서버의 스크립트는 모션 데몬이 원격 서버에서 허용하는 ssh-keygen을 실행하는 사용자(pi)가 아닌 사용자 "motion"으로 실행되기 때문에 실행되지 않습니다. 나는 다음과 같은 이유로 이것을 알고 있습니다:
on_motion_detected
명령을 다음과 같이 변경하면 :on_motion_Detected 에코 hello_world 벽 |
명령이 실행되고 SSH를 통해 Raspberry Pi에 연결된 모든 터미널에서 해당 명령이 표시됩니다.
- 또는 on_motion_Detected 라인이 아닌 Raspberry Pi의 명령줄(사용자 "pi"로)에서 실행하는 경우에도 서버에 의해 트리거됩니다.
ssh [email protected] '/exec/some/script/here'
따라서 문제는 "모션" 사용자가 더 강력한 서버로 SSH를 시도할 때 Raspberry Pi의 운영 체제에 "pi" 사용자의 키를 "사용"하도록 어떻게 지시할 것인가입니다 on_motion_detected
.
답변1
한 가지 옵션은 SSH 키를 pi
한 사용자 에서 motion
다른 사용자로 전송하는 것입니다.
(가정 사용자가 pi
및 motion
이고 이라고 /home/pi
가정 /home/motion
)
# mkdir /home/motion/.ssh/
# cp -a /home/pi/.ssh/* /home/motion/.ssh/
# chown -R motion /home/motion/.ssh/
설명하다:
지정하지 않으면 ssh 명령은 키 입력을 사용합니다 ~/.ssh/id_*
. 여기서 는 ~/
명령을 실행하는 사용자의 홈 디렉터리입니다. 따라서 Motion 사용자로 실행하면 키 입력 대신 키 입력을 ssh
사용하려고 시도합니다 ./home/motion/.ssh/
/home/pi/.ssh
답변2
Raspberry Pi에서 Motion을 실행하면 Motion의 홈 디렉터리가 다음과 같습니다.
/var/lib/motion
이미지 저장을 활성화하고 명령을 실행하여 이것을 발견했습니다.
on_picture_save echo $HOME >> /tmp/home.txt
/etc/motion/motion.conf에서 결과를 확인하세요.
.ssh 파일을 /var/lib/motion/.ssh/에 배치하여 연결을 활성화합니다.