GitLab关于SSH的使用

SSH

Git是分布式版本控制系统,这意味着您可以在本地工作,但您也可以将更改共享或“推送”到其他服务器。在将更改推送到GitLab服务器之前,您需要一个用于共享信息的安全通信通道。

SSH协议提供此安全性,并允许您对GitLab远程服务器进行身份验证,而无需每次提供用户名或密码。

有关SSH协议如何工作的更详细的解释,我们建议您阅读DigitalOcean的这本漂亮的教程。

查找现有的SSH密钥对

在生成新的SSH密钥对之前,检查您的系统是否已经在默认位置通过打开shell或Windows上的“命令提示符”运行以下命令:

Windows命令提示符:

type %userprofile%\.ssh\id_rsa.pub
Windows / GNU / Linux / macOS / PowerShell上的Git Bash

cat ~/.ssh/id_rsa.pub
如果您看到一个字符串,ssh-rsa您已经有一个SSH密钥对,您可以跳过下一个部分的生成部分,并跳到副本到剪贴板步骤。如果您没有看到字符串或想要生成具有自定义名称的SSH密钥对继续下一步。

注意:公共SSH密钥也可以命名如下:

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub

生成一个新的SSH密钥对

要生成新的SSH密钥对,请使用以下命令:

Windows / GNU / Linux / macOS上的Git Bash

ssh-keygen -t rsa -C "[email protected]" -b 4096
视窗:

或者在Windows上,您可以下载
PuttyGen
并按照本文档来生成SSH密钥对。

接下来,系统将提示您输入文件路径以保存SSH密钥对。

如果您还没有SSH密钥对,请按Enter键使用建议的路径。使用建议的路径通常允许您的SSH客户端自动使用SSH密钥对,而不需要额外的配置。

如果你已经有了一个SSH密钥对建议的文件路径,则需要输入一个新的文件路径,并声明此SSH密钥对将在您使用什么主机.ssh/config文件,请参阅使用非默认的SSH密钥对路径工作
的更多信息。

输入文件路径后,系统将提示您输入密码以保护SSH密钥对。使用SSH密钥对的密码是最佳做法,但不是必需的,您可以按Enter键跳过创建密码。

注意:
如果要更改SSH密钥对的密码,可以使用
ssh-keygen -p <keyname>。

下一步是复制公共SSH密钥,因为我们将需要它。

要将公共SSH密钥复制到剪贴板,请使用以下相应的代码:

MacOS的:

pbcopy < ~/.ssh/id_rsa.pub
GNU / Linux(需要xclip包):

xclip -sel clip < ~/.ssh/id_rsa.pub
Windows命令行:

type %userprofile%\.ssh\id_rsa.pub | clip
Windows / Windows PowerShell上的Git Bash:

cat ~/.ssh/id_rsa.pub | clip

最后一步是将您的公共SSH密钥添加到GitLab。

导航到“配置文件设置”中的“SSH密钥”选项卡。将您的密钥粘贴到“密钥”部分并给出相关的“标题”。使用可识别的标题,如“工作笔记本电脑 - Windows 7”或“家庭MacBook Pro 15”。

如果您手动复制公共SSH密钥,请确保您复制了从ssh-rsa您的电子邮件开始和结尾的整个密钥。

或者,您可以通过运行ssh -T [email protected]
(替换example.com为GitLab域)并验证是否收到Welcome to GitLab消息来测试您的设置。

使用非默认SSH密钥对路径

如果您为GitLab SSH密钥对使用非默认文件路径,则必须配置SSH客户端,以找到GitLab专用SSH密钥以连接到GitLab服务器(也许gitlab.com)。

对于您当前的终端会话,您可以使用以下命令(替换other_id_rsa为您的私有SSH密钥):

Windows / GNU / Linux / macOS上的Git Bash

eval $(ssh-agent -s)
ssh-add ~/.ssh/other_id_rsa
要保留这些设置,您需要将它们保存到配置文件中。对于OpenSSH客户端,这在~/.ssh/config某些操作系统的文件中进行了配置。以下是使用自己的SSH密钥的两个主机配置示例:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename-01

# Private GitLab server
Host gitlab.company.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename
由于各种SSH客户端及其大量配置选项,对这些主题的进一步解释超出了本文档的范围。

公共SSH密钥必须是唯一的,因为它们将绑定到您的帐户。您的SSH密钥是通过SSH推送代码时唯一的标识符。这就是为什么它需要唯一地映射到一个用户。

部署密钥

部署密钥允许只读或读写(如果启用)使用单个SSH密钥对访问一个或多个项目。

这对于将存储库克隆到持续集成(CI)服务器非常有用。通过使用部署密钥,您不必设置虚拟用户帐户。

如果您是项目主人或所有者,则可以在“Repository”部分的项目设置中添加部署密钥。指定新的部署密钥的标题并粘贴公共SSH密钥。之后,使用相应的专用SSH密钥的计算机具有对项目的只读或读写(如果启用)访问。

您不能使用该表单两次添加相同的部署密钥。如果要将另一个项目添加到另一个项目中,请在“从可用项目部署密钥”列表中启用它。所有可访问的项目的所有部署密钥都可用。该项目的访问可以通过作为项目的直接成员,或通过组来实现。

部署密钥可以在项目之间共享,您只需要将它们添加到每个项目中即可。

应用

如何将您的SSH密钥添加到Eclipse:https : //wiki.eclipse.org/EGit/User_Guide#Eclipse_SSH_Configuration

故障排除

如果在Git克隆中,系统将提示您输入密码,例如[email protected]‘s password:
您的SSH设置有问题。

确保您正确生成SSH密钥对,并将公共SSH密钥添加到您的GitLab配置文件中
尝试使用ssh-agent本文档前面所述手动注册您的私钥
尝试通过运行ssh -Tv [email protected]
(替换example.com您的GitLab域)来调试连接

时间: 2024-08-09 18:21:37

GitLab关于SSH的使用的相关文章

GitLab non-standard SSH port

/***************************************************************************** * GitLab non-standard SSH port * 说明: * 有时候GitLab Server使用非标准的SSH port,GitLab Web界面上显示出来会比较 * 方便一点. * * 2017-5-16 台湾 中和区 曾剑锋 ***********************************************

Gitlab使用SSH创建本地仓库

情景: 公司有多个项目放在gitlab上.有公司gitlab的账号密码,能正确登陆网页并看到各个项目的commit啊branch啊等等信息. 稍微要注意的一点是这个域名并没有对外发布,不配置一下host文件,根本ping不通,当然也就没办法浏览网页. 再就是我的server系统也没有装X界面(起码看上去是没装),不方便在git clone的时候输入账号密码,所以直接选择使用ssh 首先解决下source server没办法ping通的问题:在host文件里加一行解析服务器的配置. 格式:解析服务

gitLab添加ssh key

电脑新装了一台虚拟机,想要和gitLab建立一个安全的ssh连接,步骤如下 1.本机生成ssh key 系统环境:Linux 使用root用户登录,执行命令:ssh-keygen -t rsa -C "[email protected]",默认回车就ok了,该命令会创建一个隐藏的.ssh文件夹,文件夹中有2个文件:id_rsa(私钥)和id_rsa.pub(公钥),使用命令:vi id_rsa.pub查看公钥内容,复制公钥内容. 2.gitLab添加ssh key  3.授权 chmo

Gitlab的SSH配置(linux和window双版本)

1. 步骤 1.首先现在电脑端安装好git,window端请安装Git for Windows,Linux端请自行网上查询 2.先核对下电脑上是已经有ssh配置 #Git Bash on Windows / GNU/Linux / macOS / PowerShell: cat ~/.ssh/id_rsa.pub 3.若没有,则需要生成ssh的公钥私钥 Git Bash on Windows / GNU/Linux / macOS: #请先切换目录到 ~/.ssh/下 #如果不切换,当保存的文件

GitLab配置ssh key

一.背景 当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选择ssh协议来拉取代码.但是网上很少找到如何用git客户端生成ssh key,然后配置在gitlab,我当时在做的时候苦于摸索,后来终于找到了解决方案,那么本文,我们就来聊一聊如何本地git客户端生成ssh key,然后配置在gitlab里,而后使用ssh协议进行提交和拉取git远程仓库的代码. 二.解决方案 打开本地git bas

为Docker容器中运行的gitlab添加ssh的一些问题记录

最近做的一个东西,是将gitlab10.x的汉化版本,从源码编译(在源码中自己定制一些东西),然后制作成Docker镜像,作为Docker容器来运行 在启用容器中的gitlab的ssh的时候,遇到了一些问题,在这里记录一下: 网络的问题: gitlab是在容器中运行,但是我们使用git访问的时候,用的是 [email protected]主机域名:用户名/仓库名的方式来访问的,这就带来了一个问题: 客户端用ssh访问的时候,访问到的是Docker主机的22端口,而不是容器中的22端口, 解决的方

git 生成ssh key gitlab 增加 ssh key

1.在用户目录下生成 ssh key $ cd ~/.ssh 查看密钥 $ ls config (配置git 地址端口) { host:   port: } id_dsa (密钥)  id_dsa.pub (公钥) $ ssh-keygen 生成密钥 2.将密钥保存到gitlab 在github上点击"setting", 找到添加SSH key的菜单,然后新增SSH key: 把文件id_rsa.pub  里面的内容全部复制到 key编辑框中, 保存完毕:

gitlab 配置 ssh &amp;&amp; ubuntu

1,在你的电脑上生成密钥ssh-keygen -t rsa -C "[email protected]" 2,在 ubuntu系统中 ~/.ssh目录中生成了两个文件id_rsa和id_rsa.pub.id_rsa中保存的是私钥,id_rsa.pub中保存的是公钥. 3,打开 id_rsa.pub,在gitlab中 add key 把复制的内容添加进去即可遇到的错误: Fingerprint cannot be generated 翻译:指纹不能生成错误原因:由于vim编辑器有设置se

idea集成gitlab使用ssh免密登录

网上有很多介绍ssh免密登录的文章,具体步骤如下: 1. 生成SSH Key ssh-keygen -t rsa -C "[email protected]"  默认会在相应路径下(/your_home_path)生成id_rsa和id_rsa.pub两个文件,此时终端会显示: Generating public/private rsa key pair.