鍍金池/ 教程/ Java/ 管理部署密鑰
集成自動化部署
架設 CI 服務器
探索用戶資源
SSH agent 轉發(fā)
使用評論
身份認證基礎
管理部署密鑰
準備開始
傳遞部署
遍歷分頁
整合者的最佳做法
數(shù)據(jù)渲染成圖表

管理部署密鑰

在你自動化部署腳本時,一共有四種方式來管理你的服務器的 SSH 密鑰:

  • SSH agent 轉發(fā)
  • HTTPS + OAuth 令牌
  • 部署密鑰
  • 機器用戶

這個指南會幫你確定哪一種策略是最適合你。

SSH agent 轉發(fā)

在許多情況下,特別是在一個項目的初始階段,SSH agent 轉發(fā)是最簡單、最快捷的辦法,該功能使用的密鑰和你本地開發(fā)電腦所使用的密鑰相同。

優(yōu)點

  • 你不需要生成或者監(jiān)視記錄任何新的密鑰。
  • 沒有密鑰管理;用戶在服務器上擁有和本地一樣的權限。
  • 沒有任何密鑰存放在服務器上,所以即使服務器被攻陷,你也不需要尋找并刪除已經(jīng)淪陷的密鑰。

缺點

  • 用戶必須通過 SSH 連接來部署;這意味著不能使用自動化部署技術。
  • SSH agent 轉發(fā)對于 Windows 用戶來說運行起來稍顯繁瑣。

設置

  1. 要在本地打開 agent 轉發(fā),請查看我們的 SSH agent 轉發(fā)指南來獲取更多信息。
  2. 將你的部署腳本設定為使用 agent 轉發(fā)。舉例來說,在 bash 腳本里,啟用 agent 轉發(fā)應該和這個代碼類似:ssh -A serverA 'bash -s' < deploy.sh

通過 OAuth 令牌進行 HTTPS clone

如果你不想使用 SSH 密鑰,你可以使用帶 OAuth 令牌的 HTTPS

優(yōu)點

  • 任何具有訪問服務器權限的人都能部署存儲庫。
  • 用戶不必變更他們的本地 SSH 設置。
  • 多個用戶不需要準備多個令牌;一個服務器只需要一個令牌。
  • 令牌可以隨時被廢除,幾乎可以當作一個一次性密碼。
  • 可以很簡單地用腳本通過OAuth API生成新令牌。

缺點

  • 您必須確認你的令牌的訪問域已經(jīng)被正確配置。
  • 令牌的本質就是密碼,所以需要和密碼一樣被保護起來。

設置

請參照通過令牌的 Git 自動化指南。

部署密鑰

部署密鑰是一個存放在你的服務器上并且可以授權訪問一個 GitHub 存儲庫的 SSH 密鑰。這個密鑰是直接附在存儲庫上的,而不是個人用戶賬戶。

優(yōu)點

  • 任何具有訪問存儲庫權限的人都可以部署工程。
  • 用戶不需要改變他們本地的 SSH 設定。

缺點

  • 一個部署密鑰只能授權一個存儲庫。而更復雜的工程可能會在同一個服務器上對許多存儲庫發(fā)出 pull 操作。
  • 部署密鑰總是提供對一個存儲庫的完整讀寫訪問權限。
  • 部署密鑰通常沒有經(jīng)過密碼保護,如果服務器被攻陷這些密鑰將會很容易被獲取。

設置

1. 在你的服務器上執(zhí)行 ssh-keygen 程序。

2. 在任意 GitHub 頁面的右上角,點擊你的用戶相片。

http://wiki.jikexueyuan.com/project/github-developer-guides/images/top_right_avatar.png" alt="Sample of an avatar" />

3. 在你的用戶頁面內(nèi),點擊 Repositories (存儲庫)標簽頁, 然后點擊你的存儲庫的名字。

http://wiki.jikexueyuan.com/project/github-developer-guides/images/profile_repositories_tab.png" alt="Repository tab" />

4. 在你的存儲庫的右邊欄中,點擊 Settings(設定)。

http://wiki.jikexueyuan.com/project/github-developer-guides/images/repo-actions-settings.png" alt="Settings tab" />

5. 在側邊欄中,點擊 Deploy Keys(部署密鑰)。

http://wiki.jikexueyuan.com/project/github-developer-guides/images/deploy-keys.png" alt="Deploy Keys section" />

6. 點擊 Add deploy key(添加部署密鑰)。 將你的公鑰粘貼進去,并且提交。

http://wiki.jikexueyuan.com/project/github-developer-guides/images/repo-deploy-key.png" alt="Add Deploy Key button" />

機器用戶

如果你的服務器需要訪問多個存儲庫,你可以選擇創(chuàng)建一個新的 GitHub 賬戶然后附上一個僅用于自動化操作的 SSH 密鑰。因為這個 GitHub 賬戶不會被任何人類使用,所以被稱作機器用戶。接下來,你可以添加機器用戶為合作者,或者將機器用戶添加到隊伍里并給與自動化所需的存儲庫訪問權限。

注意:添加一個機器用戶作為合作者將會賦予其完整讀寫訪問權限。而添加一個機器用戶進隊伍則會賦予它隊伍的權限。

提示:我們的服務條款特地提到“ ‘bot’(機器人)或者其他自動化手段所創(chuàng)建的用戶是不被允許的”,還有“一個自然人或者法人不得持有多于一個免費賬戶”。不過不要害怕,我們不會派出極端的律師來和你糾纏到底,只要你所創(chuàng)建的機器用戶只是用于服務器部署腳本。本文提到的機器用戶是完全合法的。

優(yōu)點

  • 任何有權限訪問存儲庫和服務器的人都能部署工程。
  • 沒有任何(人類)用戶需要更改他們的本地 SSH 設定。
  • 不需要多個密鑰;一個服務器一個密鑰已然足夠。

缺點

  • 只有組織有權限創(chuàng)建隊伍;所以只有組織可以用其來限制機器用戶的權限為只讀。個人存儲庫只能對機器用戶授予合作者權限,也就是讀寫。
  • 機器用戶密鑰,和部署密鑰一樣,通常沒有密碼保護。

設置

  1. 在你的服務器上執(zhí)行 ssh-keygen 程序,然后為機器用戶賬戶附上公鑰。
  2. 給那個賬戶所需要訪問的存儲庫的訪問權限。你可以通過添加賬戶為合作者或者在組織內(nèi)添加賬戶到隊伍來做到這點。
上一篇:傳遞部署下一篇:探索用戶資源