Ssh

Linux 運動使用者 - 將其作為 ssh 密鑰作為 pi 執行到遠端伺服器

  • April 28, 2020

這個問題與我之前提出的另外兩個 問題有關,關於使 Raspberry Pi 能夠充當運動感測器,當它檢測到運動時,它將嘗試 ssh 進入更強大的伺服器(然後,更強大的伺服器將通過腳本進行額外的處理)。所以這就是我所做的:

  • 在 Raspberry Pi 上,我安裝了 Linux 運動應用程序
  • 我還在樹莓派上使用ssh-keygen過,然後使用將ssh-copy-id公鑰複製到更強大的伺服器,這樣樹莓派就可以ssh到伺服器而無需輸入密碼。
  • motion.conf文件中,有一行表示on_motion_detectedRaspberry 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使用者。

(假設您的家庭使用者piandmotion/home/piand /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/ 啟用連接。

引用自:https://unix.stackexchange.com/questions/130784