Jenkins -从Hashicorp保险库获取SSH密钥-权限过于开放

dly7yett  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(275)

我在Kubernetes群集中设置了一个Jenkins示例。该示例与Jenkins Config as Code(JCasC)使用的hashicorp vault并行运行。hashicorp vault包含kv2引擎的路径,该路径保存ssh密钥的值。
当我们部署jenkins时,我们获取ssh键值,并通过凭证插件将其设置为凭证,然后在scm中使用它来创建多分支管道。
我的问题是:运行扫描时,scm尝试使用ssh键扫描远程存储库。但是,此操作失败,并显示以下错误:

stderr: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '/var/jenkins_home/caches/gitabc123/jenkins-git-abc123.key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

我试过在pod中运行jenkins来chmod这个目录,但是这不起作用(至少在kubernetes中,我不认为我有chmod的权限).第二个问题是,这些密钥只在连接时生成,每次尝试都会生成新的密钥文件.
看起来凭据插件没有正确设置权限。有什么办法可以解决这个问题吗?凭据插件中是否需要一些配置?我的第二个猜测是我们需要以不同的格式存储ssh密钥。但是,我也尝试在jenkins中手动插入此密钥,我得到了同样的错误。

zpgglvta

zpgglvta1#

除非在Jenkins中有配置,否则要做到这一点,方法是将umask设置为377,这将创建具有400权限的SSH密钥文件。
如果您只想对特定目录执行此操作,也可以使用setfacl

相关问题