git SSH密鑰生成及部署

SSH

SSH密鑰

SSH密鑰允許您在計算機和GitLab之間建立安全連接。在shell中生成SSH密鑰之前,請通過運行以下命令檢查您的系統是否已有SSH密鑰:

Windows命令行:

type %userprofile%\.ssh\id_rsa.pub

GNU / Linux/ MAC / PowerShell的:

cat ~/.ssh/id_rsa.pub

如果您看到以字符串開頭的長字符串ssh-rsa,則可以跳過該ssh-keygen步驟。

要生成新的SSH密鑰,請使用以下命令:

ssh-keygen -t rsa -C "[email protected]"

此命令將提示您輸入密鑰對和密碼的位置和文件名。當提示輸入位置和文件名時,只需按Enter鍵即可使用默認值。如果使用其他名稱,則不會自動使用該密鑰。

注意:最佳做法是使用SSH密碼的密碼,但這不是必需的,您可以通過按Enter鍵跳過創建密碼。

如果以後要更改密鑰,可以使用以下命令: 

ssh-keygen -p <keyname>

使用以下命令顯示您的公鑰:

Windows命令行:

type %userprofile%\.ssh\id_rsa.pub

GNU / Linux/ MAC / PowerShell的:

cat ~/.ssh/id_rsa.pub

將密鑰複製粘貼到用戶配置文件中“SSH”選項卡下的“我的SSH密鑰”部分。請複製完整的密鑰,從ssh-rsa您的用戶名和主機開始到結尾。

要將公鑰複製到剪貼板,請使用以下代碼。根據您的操作系統,您需要使用不同的命令:

Windows命令行:

type %userprofile%\.ssh\id_rsa.pub | clip

Windows PowerShell

cat ~/.ssh/id_rsa.pub | clip

蘋果電腦:

pbcopy < ~/.ssh/id_rsa.pub

GNU / Linux(需要xclip):

xclip -sel clip < ~/.ssh/id_rsa.pub

部署密鑰

部署密鑰允許使用單個SSH密鑰對多個項目進行只讀訪問。

這對於將存儲庫克隆到Continuous Integration(CI)服務器非常有用。通過使用部署密鑰,您不必設置虛擬用戶帳戶。

如果您是項目主數據或所有者,則可以在“部署密鑰”部分下的項目設置中添加部署密鑰。按“新建部署密鑰”按鈕並上傳公共SSH密鑰。在此之後,使用相應私鑰的計算機具有對項目的只讀訪問權限。

您無法使用“新部署密鑰”選項兩次添加相同的部署密鑰。如果要將相同的密鑰添加到另一個項目,請在“從可用項目部署密鑰”列表中啓用它。您可以訪問的所有項目的所有部署密鑰都可用。該項目訪問可以通過成爲項目的直接成員或通過組來實現。請參閱def accessible_deploy_keys以app/models/user.rb獲取更多信息。

部署密鑰可以在項目之間共享,您只需將它們添加到每個項目中。

應用

如何將您的ssh密鑰添加到Eclipse:https//wiki.eclipse.org/EGit/User_Guide#Eclipse_SSH_Configuration

提示:非默認的OpenSSH密鑰文件名或位置

如果由於某種原因,您決定爲GitLab SSH密鑰對指定非默認位置和文件名,則必須配置SSH客戶端以找到GitLab SSH私鑰以連接到GitLab服務器(可能是gitlab.com)。對於OpenSSH客戶端,這將在~/.ssh/config文件中處理,其節類似於以下內容:

#
# Main gitlab.com server
#

Host gitlab.com
RSAAuthentication yes
IdentityFile ~/my-ssh-key-directory/my-gitlab-private-key-filename
User mygitlabusername

另一個例子

#
# Our company's internal GitLab server
#

Host my-gitlab.company.com
RSAAuthentication yes
IdentityFile ~/my-ssh-key-directory/company-com-private-key-filename

請注意,在上面的gitlab.com示例中,指定了用戶名來覆蓋OpenSSH選擇的默認值(您的本地用戶名)。僅當您的本地和遠程用戶名不同時才需要這樣做。

由於SSH客戶端種類繁多,配置選項非常多,因此對這些主題的進一步說明超出了本文檔的範圍。

公共SSH密鑰必須是唯一的,因爲它們將綁定到您的帳戶。您的SSH密鑰是通過SSH推送代碼時唯一的標識符。這就是它需要唯一映射到單個用戶的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章