这个问题与二 其他我之前有一个问题,关于让 Raspberry Pi 充当运动传感器,当它检测到运动时,它会尝试 ssh 到更强大的服务器(更强大的服务器将通过脚本进行额外的处理)。这就是我所做的:
- 在 Raspberry Pi 上,我安装了 Linux 运动应用程序
- 我也在
ssh-keygen
树莓派上使用,然后使用ssh-copy-id
复制公钥到更强大的服务器,这样树莓派就可以ssh
连接到服务器而无需输入密码。 在
motion.conf
文件中,有一行on_motion_detected
用于 Raspberry Pi 检测到运动时的事件,在那一行,我有类似的内容:SSH[电子邮件受保护]'/exec/some/script/here'
但是功能更强大的服务器上的脚本永远不会执行,因为运动守护进程以用户“motion”运行,而不是以执行远程服务器接受的 ssh-keygen 的用户 (pi) 身份运行。我知道这一点是因为:
如果我将
on_motion_detected
命令更改为:on_motion_Detected 回声 hello_world |墙
该命令被执行,我在所有通过 ssh 连接到 Raspberry Pi 的终端上看到它
- 或者,如果我只是在 Raspberry Pi 的命令行上运行(作为用户“pi”),而不是在 on_motion_Detected 行上运行,它也会被服务器触发。
ssh [email protected] '/exec/some/script/here'
所以问题是,当“motion”用户尝试 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 命令使用 key in ~/.ssh/id_*
,其中~/
是执行该命令的用户的主目录。因此,如果您以 Motion 用户身份运行,ssh
将尝试使用 key in/home/motion/.ssh/
而不是 key in/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/ 中启用连接。