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 

使用以下命令显示您的公钥:

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推送代码时唯一的标识符。这就是它需要唯一映射到单个用户的原因。

你可能感兴趣的:(git)