如何在启动时运行需要密码的脚本?

如何在启动时运行需要密码的脚本?

我在树莓派 3

我有一个脚本,在 ubuntu 启动时以 root 身份运行。为了正确运行该脚本,我需要密码。换句话说,我的脚本的开头是这样的:

#!/bin/bash

myPassword=(cat /root/foo/psw.txt)  # get password from disk
....
... etc

我通过运行以下命令保护了我的密码:

sudo chown root:root /root/foo/psw.txt
sudo chmod 700 /root/foo/psw.txt

由于该命令,只有 root 用户可以读取该文件/root/foo/psw.txt

但根据这个问题:

根所有权和独占访问是否意味着加密?

这意味着如果有人拿到 SD 卡并从磁盘读取数据,他们会找到纯文本形式的密码!

所以我的问题是如何安全地将密码传递给我的脚本,以便如果有人从 SD 卡读取数据,他们就找不到密码?

通过阅读和在互联网上研究,每个人都说不要存储密码。

那么解决方案是下载密码吗?如果我下载了密码,这意味着其他人也可以下载密码。假设我下载了密码并且它是加密的。我必须存储另一个密码才能解密该文件,这样我就只剩下另一个密码了。

答案1

我有一台服务器A和我的树莓派B。其他人可以访问B但不能访问A。换句话说,服务器A在云端,而树莓派在办公楼上。以下是解决问题的步骤:

  1. 在服务器上生成公钥和私钥A

    ssh-keygen -t rsa -b 4096

  2. 在 rapberry pi 上安装 SSH B,并将步骤 1 中生成的公钥(id_rsa.pub)放入

    /root/.ssh/authorized_keys

    (请注意,authorized_keys 是一个文件,不是一个目录,它包含公钥)

  3. 仅允许使用 RSA 进行 ssh 登录B

    PasswordAuthentication no RSAAuthentication yes AuthorizedKeysFile /root/.ssh/authorized_keys

  4. 现在无需存储任何密码A即可访问BB

    ssh -i </path/to/privateKey> root@raspberryPiIpAddress

  5. 因此,在B启动时它将发送通知到AA然后将创建一个安全的 ssh 连接B。将通过 sshA发送需要执行的命令。B

相关内容