eval 和 ssh-agent 命令起什么作用?

eval 和 ssh-agent 命令起什么作用?

我有以下命令:

评估$(ssh-agent-s)

'[[ -f /.dockerenv ]] && echo -e "主机 *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

ssh-add <(echo "$PRIVATE_KEY")

有人能解释一下这些命令在 ubuntu linux 中运行的作用吗?

答案1

一般来说,在 gitlab-runner 的环境中,它们在 docker-ized 版本的 Ubuntu 中运行,以设置环境ssh(代理、密钥和配置),使运行器能够访问 git 存储库。

具体来说:

eval $(ssh-agent -s)

...这将启动ssh-agent并配置正在运行的 shell 的环境(通过eval)以指向该代理。代理将(在下面)保存 ssh 密钥。

'[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

...这(相当具有破坏性地)弄乱了ssh配置文件(~/.ssh/config),告诉ssh不要过多关注ssh通常用于确保您的ssh会话仅连接到经过验证的主机的主机密钥。

ssh-add <(echo "$PRIVATE_KEY")

... 最后,这会将私有 ssh 密钥添加到代理(上面已启动)。然后,该密钥将用于允许运行者获得对保存代码的 git 远程的 ssh 访问权限。

如果您真的想了解有关运行器如何工作的更多信息,我建议您使用manual 页面按顺序了解每个命令。

相关内容