在GitLab CI / CD上使用SSH密鑰

      網(wǎng)友投稿 1112 2025-04-01

      亞搏體育app文件


      亞搏體育app CI / CD

      Gitlab CI / CD上使用SSH密鑰

      Gitlab CI / CD上使用SSH密鑰

      上次更新時間:2017-12-13?

      Using SSH keys with GitLab CI/CD

      GitLab當(dāng)前不支持在構(gòu)建環(huán)境(運行GitLab Runner的環(huán)境)中管理SSH密鑰的內(nèi)置支持。

      SSH密鑰在以下情況下很有用:

      您想簽出內(nèi)部子模塊

      您想使用包管理器(例如Bundler)下載私有包

      您想要將應(yīng)用程序部署到自己的服務(wù)器上,例如Heroku

      您要執(zhí)行從構(gòu)建環(huán)境到遠(yuǎn)程服務(wù)器的SSH命令

      您想將文件從構(gòu)建環(huán)境同步到遠(yuǎn)程服務(wù)器

      如果上述任何事情都響了,那么您很可能需要SSH密鑰。

      支持最廣泛的方法是通過擴(kuò)展.gitlab-ci.yml,將SSH密鑰注入到構(gòu)建環(huán)境中,并且該解決方案可與任何類型的執(zhí)行程序 (Docker,shell等)一起使用。

      這個怎么運作

      使用以下命令在本地創(chuàng)建新的SSH密鑰對 ssh-keygen

      將私鑰作為變量添加到您的項目中

      運行ssh-agent期間作業(yè)以加載私鑰。

      將公共密鑰復(fù)制到您想要訪問的服務(wù)器上(通常在中 ~/.ssh/authorized_keys),或者 在訪問私有GitLab存儲庫時將其添加為部署密鑰。

      注意: 除非您啟用 調(diào)試日志 記錄,否則私鑰將不會顯示在作業(yè)日志中 。您可能還需要檢查 管道 的可見性。

      使用Docker執(zhí)行器時的SSH密鑰

      當(dāng)您的CI / CD作業(yè)在Docker容器中運行(意味著包含環(huán)境)并且您想要在私有服務(wù)器中部署代碼時,您需要一種訪問它的方法。這是SSH密鑰對派上用場的地方。

      您首先需要創(chuàng)建一個SSH密鑰對。有關(guān)更多信息,請按照說明生成SSH密鑰。 請勿在SSH密鑰中添加密碼,否則before_script會提示您輸入密碼。

      創(chuàng)建一個新變量。在“ 密鑰”中輸入名稱,SSH_PRIVATE_KEY然后在“ 值”字段中粘貼先前創(chuàng)建的私鑰的內(nèi)容。

      修改您.gitlab-ci.yml的before_script操作。在以下示例中,假定使用基于Debian的圖像。根據(jù)需要進(jìn)行編輯:

      before_script: ## ## Install ssh-agent if not already installed, it is required by Docker. ## (change apt-get to yum if you use an RPM-based image) ## - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' ## ## Run ssh-agent (inside the build environment) ## - eval $(ssh-agent -s) ## ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store ## We're using tr to fix line endings which makes ed25519 keys work ## without extra base64 encoding. ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556 ## - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - ## ## Create the SSH directory and give it the right permissions ## - mkdir -p ~/.ssh - chmod 700 ~/.ssh ## ## Optionally, if you will be using any Git commands, set the user name and ## and email. ## #- git config --global user.email "user@example.com" #- git config --global user.name "User name"

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      在GitLab CI / CD上使用SSH密鑰

      29

      30

      31

      32

      注: 在 before_script 可以全局或每一個作業(yè)設(shè)置。

      確保專用服務(wù)器的SSH主機(jī)密鑰已驗證。

      作為最后一步,加上公眾從你的第一步,你想擁有從構(gòu)建環(huán)境中的接入服務(wù)創(chuàng)建的一個關(guān)鍵。如果要訪問私有的GitLab存儲庫,則需要將其添加為部署密鑰。

      而已!現(xiàn)在,您可以在構(gòu)建環(huán)境中訪問私有服務(wù)器或存儲庫。

      使用Shell執(zhí)行程序時的SSH密鑰

      如果您使用的是Shell執(zhí)行程序而不是Docker,則設(shè)置SSH密鑰會更加容易。

      您可以從安裝了GitLab Runner的計算機(jī)生成SSH密鑰,并將該密鑰用于在該計算機(jī)上運行的所有項目。

      首先,登錄到運行您的作業(yè)的服務(wù)器。

      然后,從終端以gitlab-runner用戶身份登錄:

      sudo su - gitlab-runner

      1

      按照說明生成SSH密鑰對,以 生成SSH密鑰。 請勿在SSH密鑰中添加密碼,否則before_script會提示您輸入密碼。

      作為最后一步,加上公眾從前面創(chuàng)建要具有從構(gòu)建環(huán)境中的接入服務(wù)的一個關(guān)鍵。如果要訪問私有的GitLab存儲庫,則需要將其添加為 部署密鑰。

      完成后,嘗試登錄到遠(yuǎn)程服務(wù)器以接受指紋:

      ssh example.com

      1

      要訪問GitLab.com上的存儲庫,可以使用git@gitlab.com。

      驗證SSH主機(jī)密鑰

      最好檢查私有服務(wù)器自己的公用密鑰,以確保您不會受到中間人攻擊的攻擊。萬一發(fā)生任何可疑事件,您將注意到它,因為作業(yè)將失敗(如果公鑰不匹配,則SSH連接將失敗)。

      要查找服務(wù)器的主機(jī)密鑰,請ssh-keyscan從受信任的網(wǎng)絡(luò)(最好從專用服務(wù)器本身)運行命令:

      ## Use the domain name ssh-keyscan example.com ## Or use an IP ssh-keyscan 1.2.3.4

      1

      2

      3

      4

      5

      創(chuàng)建一個新變量,將其 SSH_KNOWN_HOSTS作為“鍵”,并作為“值”添加的輸出ssh-keyscan。

      注意: 如果需要連接到多個服務(wù)器,則所有服務(wù)器主機(jī)密鑰都需要收集在變量的 Value 中,每行一個密鑰。

      提示: 通過使用變量而不是 ssh-keyscan 直接在變量內(nèi)部 .gitlab-ci.yml ,它具有以下優(yōu)點: .gitlab-ci.yml 如果主機(jī)域名由于某些原因而更改,則不必更改。而且,這些值是由您預(yù)定義的,這意味著如果主機(jī)密鑰突然更改,CI / CD作業(yè)將失敗,并且您將知道服務(wù)器或網(wǎng)絡(luò)出了點問題。

      現(xiàn)在SSH_KNOWN_HOSTS已經(jīng)創(chuàng)建了變量,除了 上面的 內(nèi)容.gitlab-ci.yml之外,還需要添加以下內(nèi)容:

      before_script: ## ## Assuming you created the SSH_KNOWN_HOSTS variable, uncomment the ## following two lines. ## - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts ## ## Alternatively, use ssh-keyscan to scan the keys of your private server. ## Replace example.com with your private server's domain name. Repeat that ## command if you have more than one server to connect to. ## #- ssh-keyscan example.com >> ~/.ssh/known_hosts #- chmod 644 ~/.ssh/known_hosts ## ## You can optionally disable host key checking. Be aware that by adding that ## you are susceptible to man-in-the-middle attacks. ## WARNING: Use this only with the Docker executor, if you use it with shell ## you will overwrite your user's SSH config. ## #- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config'

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      示例項目

      為了方便起見,我們建立了一個示例SSH項目,使用我們的公共 共享運行程序在GitLab.com上運行。

      想要破解嗎?只需對其進(jìn)行分叉,提交并推送您的更改。稍后,公共跑步者將選擇更改并開始工作。

      Git GitHub ssh

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:在線報表設(shè)計工具(圖形報表工具
      下一篇:生產(chǎn)加工制造業(yè)(生產(chǎn)加工制造業(yè)17個人屬于什么規(guī)模)
      相關(guān)文章
      亚洲人成色7777在线观看不卡 | 亚洲乱码卡一卡二卡三| 久久久久亚洲精品男人的天堂 | 亚洲男人的天堂www| 亚洲精品国产福利一二区| 国产成人亚洲综合a∨| 亚洲国产日韩精品| 亚洲AV成人一区二区三区在线看| wwwxxx亚洲| 亚洲免费二区三区| 2020国产精品亚洲综合网 | 亚洲色成人中文字幕网站| 伊人久久精品亚洲午夜| 最新精品亚洲成a人在线观看| 在线观看国产区亚洲一区成人 | 亚洲熟妇自偷自拍另欧美| 亚洲人成网站在线播放2019| 亚洲欧好州第一的日产suv| 亚洲精华国产精华精华液好用| WWW国产亚洲精品久久麻豆| 亚洲国模精品一区| 亚洲综合AV在线在线播放| 国产V亚洲V天堂无码久久久| 亚洲国产精品久久| 亚洲精品在线免费看| 亚洲Av高清一区二区三区| 色老板亚洲视频免在线观| 亚洲欧美成人av在线观看| 亚洲AV成人精品日韩一区18p| 亚洲日韩国产精品乱| 亚洲国产三级在线观看| 亚洲视频在线免费播放| 亚洲一区精彩视频| 国产精品亚洲一区二区三区| 国产成人亚洲精品影院| 久久精品国产亚洲夜色AV网站| 亚洲嫩草影院在线观看| 亚洲欧美日韩中文字幕一区二区三区| 国产精品亚洲一区二区在线观看| 亚洲性日韩精品国产一区二区| 亚洲高清专区日韩精品|