[英]Pull ssh keys in docker container at runtime
我正在創建一個將與Git repo集成並執行諸如push,pull commit等操作的nodejs應用程序。我正在將應用程序移至Docker。 但是我找不到在運行時將ssh密鑰放入docker映像中的方法。 出於安全原因,我想避免在構建時在docker映像中復制ssh密鑰。
我曾嘗試在運行時將ssh密鑰作為env變量傳遞:
docker run -i -t -e KEY="sshkey" imagename
並在node.js中手動創建ssh文件夾和ssh密鑰
mkdirSync('/root/.ssh/', (err) => {
writeFileSync('/root/.ssh/id_rsa.pub', sshKey, (err) => {
})
})
但是,這似乎不起作用,嘗試克隆存儲庫時仍然出現權限錯誤。
下面的示例說明了如何從容器內讀取主機上的私鑰。
docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro ubuntu cat /root/.ssh/id_rsa
這應該使以root用戶身份運行的進程通過您的憑據進行身份驗證。
如果要通過SSH進行身份驗證,則需要添加私鑰 ,而不是公共密鑰。 在您的情況下,可能是文件id_rsa
。 服務器使用公用密鑰來驗證您的身份。
Dockerfile
僅用於構建,因此無法在運行時使用它進行任何操作。 我認為您使用環境變量的方法是合理的...
您可以通過docker exec
連接到容器,打開bash並與文件系統進行交互,就像通常那樣:
docker exec -it imagename /bin/bash
假設您正在運行帶有bash的系統。 否則,請嘗試/bin/sh
。
對於主機和docker上的非root用戶:
docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.