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
使用以下命令显示您的公钥:
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推送代码时唯一的标识符。这就是它需要唯一映射到单个用户的原因。