Ssh
Linux 運動使用者 - 將其作為 ssh 密鑰作為 pi 執行到遠端伺服器
這個問題與我之前提出的另外兩個 問題有關,關於使 Raspberry Pi 能夠充當運動感測器,當它檢測到運動時,它將嘗試 ssh 進入更強大的伺服器(然後,更強大的伺服器將通過腳本進行額外的處理)。所以這就是我所做的:
- 在 Raspberry Pi 上,我安裝了 Linux 運動應用程序
- 我還在樹莓派上使用
ssh-keygen
過,然後使用將ssh-copy-id
公鑰複製到更強大的伺服器,這樣樹莓派就可以ssh
到伺服器而無需輸入密碼。- 在
motion.conf
文件中,有一行表示on_motion_detected
Raspberry Pi 檢測到運動時的事件,在那一行中,我有類似的內容:ssh user@more.powerful.server ‘/exec/some/script/here’
- 但是更強大的伺服器上的腳本永遠不會執行,因為運動守護程序是以使用者“motion”執行的,而不是執行遠端伺服器接受的 ssh-keygen 的使用者 (pi)。我知道這是因為:
- 如果我將
on_motion_detected
命令更改為:on_motion_detected 迴聲 hello_world | 牆
該命令被執行,我在所有通過 ssh 連接到 Raspberry Pi 的終端上都看到了它
- 或者,如果不是在 on_motion_detected 行上,我只是
ssh user@more.power.server '/exec/some/script/here'
在 Raspberry Pi 的命令行上執行(作為使用者“pi”),它也會被伺服器觸發。所以問題是,在那種情況下,當“motion”使用者嘗試 ssh 進入更強大的伺服器時,如何告訴 Raspberry Pi 的作業系統“使用”“pi”使用者的密鑰
on_motion_detected
?
一種選擇是將您的 ssh 密鑰從
pi
一個使用者移動到另一個motion
使用者。(假設您的家庭使用者
pi
andmotion
是/home/pi
and/home/motion
)# mkdir /home/motion/.ssh/ # cp -a /home/pi/.ssh/* /home/motion/.ssh/ # chown -R motion /home/motion/.ssh/
解釋:
如果未指定,ssh 命令使用 key in
~/.ssh/id_*
,其中~/
是執行此命令的使用者的主目錄。因此,如果您以動作使用者身份執行,ssh
將嘗試使用 key in/home/motion/.ssh/
而不是 key in/home/pi/.ssh
當我在 Raspberry Pi 上執行 Motion 時,我發現 motion 的主目錄是
/var/lib/motion
我通過啟用圖片保存並執行命令發現了這一點
on_picture_save echo $HOME >> /tmp/home.txt
在 /etc/motion/motion.conf 並檢查結果。
將 .ssh 文件放入 /var/lib/motion/.ssh/ 啟用連接。