2

我正在尝试为托管在 Google Cloud VM 中的软件设置 Jenkins。我有一个具有用户帐户 A 和用户帐户 B 的 VM。Jenkins 托管在用户帐户 A 中。所有其他软件都托管在用户帐户 B 中。为了授权 Jenkins ssh 进入 userB@VM_ADDRESS,我将用户 A 的 . ssh/id_rsa.pub 进入用户 B 的 .ssh/authorized_keys。这允许 Jenkins 在我将更改推送到 Github 时通过 ssh 连接到 userB@VM_ADDRESS 以更新我的软件。但是,过了一会儿,由于某种原因,用户帐户 B 中的 .ssh/authorized_keys 被替换/刷新,我的密钥消失了,Jenkins 的 ssh 将因权限被拒绝而失败。我应该如何解决这个问题?还是我做错了詹金斯?

我在https://groups.google.com/g/gce-discussion/c/iHqRb2KlMZg/m/x59xV4pYAQAJ?pli=1看到了这个帖子,这似乎是一个类似的问题,但通读后我仍然不知道我在做什么需要做。

4

1 回答 1

4

元数据中的 SSH 密钥会定期重新部署。为了解决这个问题,不要在系统中手动执行复制/粘贴,而是复制密钥并(将其添加到计算引擎元数据中](https://cloud.google.com/compute/docs/instances/adding-removing -ssh-keys )


但是,我不确定这是遵循的好方法。为什么不使用帐户 A 登录,因为它是“现实”并对软件执行操作?您可以将帐户 A 和帐户 B 放在同一个 Linux 组中,或者在最后执行 chown 更改新文件的所有者。

这个棘手的问题背后的要求是什么?


更新1:

使用帐户 A 的密钥登录用户 B 的事实就像是在冒充。最后,您不知道是用户帐户 A 还是 B 对您的文件执行了操作。

无论如何,在 linux 中你有 3 级权限 UGA(用户、组、所有),这就是为什么你在执行 rwxr-xr 时会有这样的事情ls -la:rwxr-xr——这意味着 U(用户)可以执行 RWX(读写执行) ,组只能读取和执行,并且都只能读取。

因此,如果用户账号A和用户账号B在同一个Group中,则可以设置共同的组权限,避免所有(其他人)访问文件。

于 2020-12-04T11:44:58.763 回答