Ssh
詹金斯奴隸無法從 Gitlab 複製
我在 AWS 上有一個自動縮放的 Jenkins 集群,它通過 JNLP 生成和執行代理。Master & Slaves 都在 Ubuntu 上執行。我不太明白 Jenkins 實際在哪裡儲存 Gitlab 的 SSH 密鑰,或者奴隸是否/如何使用它。每當我在我的奴隸上執行 Jenkins 作業時,我都會得到以下資訊:
git clone git@git.mydomain.co.uk/myproject.git Cloning into 'build-scripts'... Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
我可以通過 SSH 連接到從站並手動執行相同的命令來確認該行為。從屬 .jar 以“Jenkins”使用者身份執行,但是當我成為預設的“ec2-user”、“Jenkins”使用者,甚至作為 root 使用者時,我無法使用 Git 複製。我安裝了 Git 外掛、Git Credentials 外掛和 Git Server 外掛,我之前認為它們會在啟動時將密鑰複製到從屬伺服器。我能夠從 Master 執行完全相同的 SSH 命令並且它工作正常,並且 Master 能夠與 Git 對話以將儲存庫複製為多分支管道。
這可能是一個簡單的解決方案,但我有點難過。有誰知道允許奴隸通過 SSH/將密鑰複製到可用的地方需要什麼?
我的猜測是,您的 ssh 密鑰未添加到您的 github 帳戶中,或者 Jenkins 從屬程序使用與您從命令行執行 git 的使用者不同的使用者執行。如果是這種情況 - 您需要將 ssh 密鑰添加到您的 github 帳戶,或者需要批准該使用者的初始主機密鑰驗證,然後才能在 Jenkins 中執行 git。(你知道 - 第一次連接 ssh 時收到的消息: