Linux 运动用户 - 将其作为 ssh 密钥作为 pi 运行到远程服务器

Linux 运动用户 - 将其作为 ssh 密钥作为 pi 运行到远程服务器

这个问题与 其他我之前有一个问题,关于让 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另一个用户。

(假设您的家庭用户pimotion/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/ 中启用连接。

相关内容