1 前言

近日,换了台新电脑。

今日,正要更新(git pull)GitLab的源码时,在配置(用户名,邮箱,密码git config --global -l)完全无误的情况下,却报出如下错误:

$ git pull
git@10.0.5.16's password:
Permission denied, please try again.
git@10.0.5.16's password: Permission denied, please try again.
git@10.0.5.16's password:
git@10.0.5.16: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository. Please make sure you have the correct access rights
and the repository exists.

查了一下网友们的博客,可以无疑确定问题所在:

因新电脑的SSH密钥与GitLab个人账户中的SSH公钥匹配不上,导致远程自动登录失败,远程拉取Git代码错误。

(PS: (由于新电脑,.ssh下根本就不存在私钥))

经过捣鼓一翻,还真成!那么,现在记录一下叭!

2 使用SSH远程登录GitLab

  • step0 打开Git Bash

  • step1 确认/配置 Git的用户名和邮箱 无误

$ git config --global user.name "u$er"
[更改全局用户名]
$ git config --global user.email "yyyy@xxxx.com"
[更改全局用户邮箱] $ git config --global -l
user.name=u$er
user.email=yyyy@xxxx.com
  • step2 切换到当前用户主目录的ssh目录下

    若提示 “ No such file or directory”,可在系统对应路径下新建.ssh文件夹即可mkdir ~/.ssh
$cd ~/.ssh

$ pwd
/c/Users/Johnny/.ssh
  • step3 本地生成SSH通信的公钥和私钥
$ ssh-keygen -t rsa -C "yyyy@xxxx.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Johnny/.ssh/id_rsa): 【Enter】
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 【可输入SSH密码,也可不输入。一旦输入,以后git pull/push等操作时,均需输入SSH密码】
Your identification has been saved in /c/Users/Johnny/.ssh/id_rsa.
Your public key has been saved in /c/Users/Johnny/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1UMiwerwehwfhiuwehdsvbk234vjsdv453k456IL567pqwgKexRitL2bkHN6+yhkJY yyyy@xxxx.com
The key's randomart image is:
+---[RSA 2048]----+
| ..o . |
| .o.+ |
| + .--o |
| . o .+ . |
| + . +S. |
|++o++ = + |
|@*E. .O+ . |
|B++o+.B.o |
|o. +++.. |
+----[SHA256]-----+ $ ll
total 6
-rw-r--r-- 1 Johnny 197121 1766 9月 10 19:25 id_rsa
-rw-r--r-- 1 Johnny 197121 403 9月 10 19:25 id_rsa.pub

这样系统路径下就生成了2个密钥文件:id_rsa(私钥,存在本地)和id_rsa.pub(公钥,发放给客户端,例如:GitLab个人账户中)

  • step4 全文拷贝生成的SSH公钥到GitLab中
$ clip < ~/.ssh/id_rsa.pub
【clip: 拷贝/剪切板命令】


  • step5 验证
$ ssh -T git@GitLabHostAddress
[方式1] $ git pull
Enter passphrase for key '/c/Users/Johnny/.ssh/id_rsa': 【若之前设置了SSH密码,则:此时需输入正确的SSH密码】
remote: Enumerating objects: 1468, done.
remote: Counting objects: 100% (1468/1468), done.
remote: Compressing objects: 100% (735/735), done.
remote: Total 1468 (delta 781), reused 1360 (delta 719)
Receiving objects: 100% (1468/1468), 10.93 MiB | 5.03 MiB/s, done.
Resolving deltas: 100% (781/781), completed with 95 local objects.
...
[方式2]

X 参考文献

[Git/GitLab]使用SSH远程登录GitLab/GitHub的更多相关文章

  1. 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等

    一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...

  2. 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案

    ssh远程登录Linux卡慢的全过程排查及解决方案 前言: 在linux操作系统使用过程中偶然一次感到使用ssh远程连接软件连接操作系统需要等待许久,第一次没在意,第二次也没在意,第三次有点忍受不住了 ...

  3. Firefly安装ROS及ssh远程登录配置

    一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT  + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...

  4. SSH客户端(如PuTTY)ssh远程登录Linux非常慢的解决方法

    转:http://blog.useasp.net/archive/2014/05/19/solved-the-problem-of-ssh-client-such-as-putty-remote-lo ...

  5. ssh远程登录linux live系统

    要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...

  6. ssh远程登录linux服务器

    ssh远程登录linux服务器 用法: ssh -l user -p port server_ip 或者 ssh -p port user@server_ip 参数: -l 后接要登录的远程系统用户名 ...

  7. ssh远程登录命令简单实例

    ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...

  8. python实现ssh远程登录

    python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...

  9. SSH(远程登录)原理

    最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等.下面就用一张图来解释SSH登录验证的 ...

  10. ubuntu拒绝root用户ssh远程登录解决办法

    ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录,解决办法就是:修改ssh配置,然后重启ssh服务即可. vi /etc/ssh/sshd_config 找到并用#注 ...

随机推荐

  1. Python使用双层列表推导式输出九九乘法表

    print('\n'.join([' '.join(['%2d *%2d = %2d' % (col, row, col * row) for col in range(1, row + 1)]) f ...

  2. 2003031118—李伟—Python数据分析第七周作业—MySQL的安装以及使用

    项目    MySQL的安装以及使用 课程班级博客链接 20级数据班(本) 这个作业要求链接 作业要求 博客名称 2003031118-李伟-Python数据分析第七周作业-MySQL的安装以及使用 ...

  3. android 下载安装包更新app

    1下载 public void download(String url) { Utils.Loge("download",url); Uri uri = Uri.parse(url ...

  4. IT工具知识-13: 如何编辑SVG图像文件并转换为ICO图标文件

    使用背景 最近做了个小软件, 但是桌面快捷方式图标不好看, 于是想着找个好看点的图标, 但是网上搜了一圈, 发现好看的几乎都要钱, 常用的话, 付费倒也不反感, 但是, 仅仅只用那么一两次, 为这个付 ...

  5. 【内存管理】CMA内存分配器(Contiguous Memory Allocator)

    什么是CMA 参考这两篇博文,写得很好: http://www.wowotech.net/memory_management/cma.html https://www.cnblogs.com/Loye ...

  6. C#中字符数组,字节数组和string之间的转化(转)

    原文链接:http://hi.baidu.com/endyli/item/7bf074945de35e1f934f41fe 来源: NDC(NetworkDiskClient)的界面和后台程序之间用S ...

  7. APP 监听手机键盘是否弹出

    /** * 监听键盘是否弹出 * @param show * @param hide */ export const addEventKeyboardStatus = (show,hide)=> ...

  8. String的Equals()和==比较

    String的Equals()和==比较 常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.JVM虚拟机为每个被装载的类型维护一个常量池.常量 ...

  9. JDMasking v0.1.0-beta 发布

    JDMasking 全称是jdbc data masking,是一款零代码修改.无重启.基于JDBC的动态数据脱敏软件. JDMasking 主要对实现jdbc的驱动进行字节码的增强,支持对运行中的程 ...

  10. MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu's Sponsored Search——百度下一代搜索广告系统

    简介 传统的广告最终的呈现需要经过召回与排序两个阶段,百度的搜索架构则采用三层漏斗状,如图1所示.最上面的一层用于筛选出和用户查询最相关的一部分广告,将整个候选广告集从亿级降到千级:下面两层是排序阶段 ...