gpt4 book ai didi

linux - jenkins 应该有什么权限来执行 shell 命令而不是不安全的?

转载 作者:太空狗 更新时间:2023-10-29 12:34:59 26 4
gpt4 key购买 nike

我在本地服务器上有一个脚本 (test.sh),它在终端中执行时运行良好。该脚本删除一个目录,并在本地重新创建一个目录。然后它使用“ssh -i $private_key ..”连接到远程服务器并在那里复制一个文件。

当我用

在 jenkins 中执行这个脚本时
sh test.sh

它不起作用。我收到以下错误:

rm: .. Permission denied
mkdir: .. Permission denied
Warning: Identity file /.ssh/private_key not accessible: Permission denied.

Jenkins 与脚本在同一台服务器上。

我看到 Jenkins 是另一个用户,不能做我作为 root 所做的一切;如何在不失去所有安全性的情况下设置权限。特别是在 private_key 的情况下,将权限设置为 easy 会很愚蠢 - 当前设置为 600(所有者的读写权限)并且所有者是 root。

最佳答案

将私钥的权限设置为 600 的全部意义在于,其他用户不应能够访问它。如果您将 key 放在另一个用户的主目录 (/home/anotheruser/.ssh) 中,那么 Jenkins 用户和其他任何人(root 除外)都无法访问它。 这是设计好的

如果您希望您的 Jenkins 用户能够使用私钥,请将其也复制到 jenkins 用户主目录 (/home//.ssh)。

此外,如果您尝试以 Jenkins 用户身份在其他用户的目录中删除/创建目录而不提供权限,您将收到权限错误。这是因为安全。允许这样做的唯一方法是允许 Jenkins 用户对这些目录进行更改。

一个安全的选择是将 Jenkins 用户添加到与其他用户相同的组中。执行此操作后,设置要读取和写入的目录的权限,以允许用户组中的任何人进行更改。

rwxrwx---

以上权限将允许文件夹的所有者和同一组中的任何其他用户进行更改,但不允许其他任何人。这是安全的,因为您可以控制谁是其他用户组的一部分。

编辑

不过,看起来您的错误已更改。您不会再被拒绝许可。你还能通过终端来做吗? (我认为)它说主机 key 验证失败的原因是因为您的 key 最初是为其他用户创建的。我意识到我在上面的答案中说过要这样做,但这不是正确的方法。

作为 jenkins 用户,您可以运行以下命令吗:

ssh-keygen (say yes or agree if it asks if you want to replace your current keys)
ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@remote_server
ssh remoteuser@remote_server

如果可行,请通过终端尝试您的脚本,然后再次通过 jenkins...

关于linux - jenkins 应该有什么权限来执行 shell 命令而不是不安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14156078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com