在运行时拖拽docker容器中的ssh键
我正在创build一个nodejs应用程序,该应用程序将与Git仓库集成,并执行诸如push,pull commit等操作。我正在将应用程序移至Docker。 但是我找不到在运行时将ssh密钥放入泊坞窗图像的方法。 为了安全起见,我想避免在构build时在docker镜像中复制ssh密钥。
我曾尝试在运行时将ssh密钥作为envvariables传递,如下所示:
docker run -i -t -e KEY="sshkey" imagename
并在node.js中手动创buildssh文件夹和ssh密钥
mkdirSync('/root/.ssh/', (err) => { writeFileSync('/root/.ssh/id_rsa.pub', sshKey, (err) => { }) })
但是,这似乎并没有工作,但我仍然在尝试克隆回购时遇到许可错误。
- 我需要做些什么来加载SSH密钥,以便他们可以使用GIT?
- 有没有办法使用Dockerfile来做到这一点。 我知道我可以将它添加到构build,时间,但还没有find一种方法来在运行时。
- 我如何检查正在运行的docker集装箱的FS?
-
你需要添加你的私钥,如果你想通过SSH进行身份validation,而不是你的公钥。 在你的情况下,这可能是文件
id_rsa
。 公钥被服务器用来validation你的身份。 -
Dockerfile
仅用于构build,因此无法在运行时使用它来执行任何操作。 我认为你的方法与环境variables是合理的… -
您可以通过
docker exec
连接到容器,打开bash并像通常那样与文件系统交互:docker exec -it imagename /bin/bash
这假定你正在运行一个bash系统。 否则,请尝试
/bin/sh
。
以下人为的例子演示了主机上的私钥如何从容器中读取。
docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro ubuntu cat /root/.ssh/id_rsa
这应该让以root用户身份运行的进程使用您的凭证进行身份validation。
对于主机和docker上的非root用户:
docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image>