我正在尝试访问发送到GitHub Action的SECRET
的值,但是我很挣扎。无论键或原始值是什么,每次都将这些值作为[FILTERED]
返回。
我可以毫无问题地访问ENVIRONMENT VARIABLES
,所以我必须在其他地方搞砸。
本质上,我想做的是将ssh密钥发送到我的操作/容器,但是在发送其他任何密钥/值作为秘密时,我也会遇到相同的问题。
我的(简化的)GitHub动作如下:
action "Test" {
uses = "./.github/actions/test"
secrets = [
"SSH_PRIVATE_KEY",
"SSH_PUBLIC_KEY",
]
env = {
SSH_PUBLIC_KEY_TEST = "thisisatestpublickey"
}
}
Dockerfile:
FROM ubuntu:latest
# Args
ARG SSH_PRIVATE_KEY
ARG SSH_PUBLIC_KEY
ARG SSH_PUBLIC_KEY_TEST
# Copy entrypoint
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh:
#! /bin/sh
SSH_PATH="$HOME/.ssh"
mkdir "$SSH_PATH"
touch "$SSH_PATH/known_hosts"
echo "$SSH_PRIVATE_KEY" > "$SSH_PATH/id_rsa"
echo "$SSH_PUBLIC_KEY" > "$SSH_PATH/id_rsa.pub"
echo "$SSH_PUBLIC_KEY_TEST" > "$SSH_PATH/id_rsa_test.pub"
cat "$SSH_PATH/id_rsa"
cat "$SSH_PATH/id_rsa.pub"
cat "$SSH_PATH/id_rsa_test.pub"
这三个cat
命令的输出是:
[FILTERED]
[FILTERED]
thisisatestpublickey
如您所见,我可以获取(并使用)环境变量的值,但是秘密没有被公开。
有人知道吗?
只是为了更新此内容,我还只是尝试回显entrypoint.sh中两个没有引号的秘密:
echo $SSH_PRIVATE_KEY
echo $SSH_PUBLIC_KEY
...并且在日志中,我看到$SSH_PRIVATE_KEY
的全部解密内容(即我的ssh密钥的实际内容),而$SSH_PUBLIC_KEY
仍返回[FILTERED]
。>
因此,我可以假定我们能够看到某个动作内部的秘密内容,但是我不知道为什么我只能看到其中一个,而另一个返回[FILTERED]
。
也许是缓存的东西吗?
我只是想找出一种可预测的方式来使用它。
答案 0 :(得分:0)
如您所见,我可以获取(并使用)环境变量的值,但是秘密没有被公开。
那是因为它们是秘密。明确清除了“动作”输出中的秘密,并且不会显示这些秘密。
文件内容仍然包含机密内容。