window系统,GitLab 远程与本地 SSH 认证连接

     最近使用git,搭建git 远程与本地 ,使用了ssh 认证。 ssh 认证的时候,查了好些资料,都认证不成功,后来各种尝试,终于成功。故写此博客,以记录自己windows 系统ssh认证成功过程。

一。 git 下载

  git 下载地址链接: http://git-scm.com/downloads

  git安装完成后,在菜单git-git bash,点击,显示一个类似命令行窗口的东西,说明git安装成功。

  git 本地仓库与远程仓库连接:ssh。其实Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。但是使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令。

登陆gitlab,新建一个仓库,进入仓库,看看到该仓库有两个地址,一个是https的,一个是ssh的。

    我们选择使用 SSH 的。 

二、下面 介绍 Git   的 SSH 连接过程:

2.1 本地 找到Git bash,  Git bash客户端,右击--管理员身份运行,输入cd ~/.ssh,有文件,进入。没有使用mkdir新建 .ssh,再进入。

   进入,生成gitlab.com对应的私钥公钥,命令:$ssh-keygen -t rsa -C 邮箱,连续回车三次,结果如下,即成功

 本地 .ssh 中,成功生成两个文件,id_rsa 私钥、id_rsa公钥。 后缀publisher的是公钥。 (私钥文件 不要给任何人)

 Git  bash中,cd 进入 .ssh 目录下,输入ls, 显示有两个文件。

2.2  将SSH 公钥添加到 Gitlab 账号

  本地找到Users/xx/.ssh ,打开,有两个文件:公钥、私钥;公钥,使用文本或 sublime 打开,全选、复制。

   进入Gitlab设置界面,登录 公司Gitlab 地址,输入自己的账号、密码,进行登录。登录成功---右上角账户管理---Setting---SSH Keys菜单,“key”栏中粘贴刚刚复制的公钥内容,在title栏输入 标题,点击“Add key”按钮。(粘贴时选择为纯文本)------  公钥添加成功。

 2.3 windows 本地 ,将SSH 私钥添加到 ssh-agent

  Git bash 后台启用ssh-agent, 输入命令1: (注意第一个 $ 是打开  git bash 输入命令前自带符合,不必再次输入)

  $eval $(ssh-agent -s)

  将ssh私钥添加到ssh-agent,输入命令2:

  $ssh-add /c/Users/xx/.ssh/id_rsa    (输入自己本地 私钥所在路径 + 私钥名)

1.4 config 配置  

  Git bash 中 输入vim config,新建并打开config 配置文件,输入以下内容:

  HostName  gitlab.xxxx.com   (----输入自己公司git 域名)

  IdentityFile  C:/Users/xx/.ssh/id_rsa    (--私钥路径 + 私钥文件名)

  User  wangxxxx    (用户名---登录git 的用户名)

1.5 测试连接

  生成公钥私钥,公钥添加到gitlab 账户管理,私钥增加到 本地 ssh-agent中,配置文件内容 配置;

  以上四步完成,打开git bash客户端,输入命令: 

  $ ssh -T git@gitlab.xxxx.com    (@ 后是自己 公司gitlab的 域名)

  首次连接,会让你选择yes /no, 输入yes,继续进行连接

  界面显示: Welcome to Gitlab,xxxx!   如下图所示:

  

  代表 SSH  连接成功。 

  三、 SSH 认证 过程中遇到的坑

  3.1  坑一:前面四步都做完,输入 ssh -T 命令,测试连接是否通过时,显示  以下错误信息

Bad configuration option: 357273277hostname
/c/Users/351207221347247221/.ssh/config: terminating, 1 bad configuration options

  错误原因: config 文件配置时,没有使用vim命令,自己在ssh 中新建的 文件,然后使用wps文档格式进行输入的内容。

一般配置文件,都不用word等文档格式进行内容的输入、修改。 word 文档进行内容输入,会自动增加一些处理、肉眼看不到,但会出现问题。不容易查找。 测试配置文件、代码编写等可以选择使用专业的编程工具 sublime等

解决方式:config 文件配置内容时,直接在git bash 中输入 vim config,进入内容输入。 再次查看进行修改时,使用sublime 编程工具打开,进行代码的修改。 保存后,尝试 输入ssh -T 连接,连接成功。

  3.2  坑二: 输入 ssh -T 命令,测试链接,一直显示time out

  解决方式: config 配置文件中 ,HostName 后的域名,改成:192.168.xx.xx  

将hostname后的  gitlab公司域名改成 对应的ip 地址。 

再次尝试连接,测试通过。 顺利认证通过,显示 welcome to gitlab,@xxxx!

  3.3 坑三: 之前链接的时候,网上找了好些资料,都缺少 本地ssh-agent 中增加私钥 这一步,导致怎么连接都连接不成功。 最后,找到了一个 有ssh 本地增加私钥的,尝试,认证通过。 故,记录下过程, 方便自己及其他查阅资料使用。

原文地址:https://www.cnblogs.com/MTXue/p/11212581.html