[Git/GitLab]使用SSH远程登录GitLab/GitHub
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的更多相关文章
- 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等
一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...
- 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案
ssh远程登录Linux卡慢的全过程排查及解决方案 前言: 在linux操作系统使用过程中偶然一次感到使用ssh远程连接软件连接操作系统需要等待许久,第一次没在意,第二次也没在意,第三次有点忍受不住了 ...
- Firefly安装ROS及ssh远程登录配置
一.在Linux firefly 3.10.0 上安装ROS-indigo 快捷键 CTRL + ALT + T 打开终端并安装ROS-indigo sudo sh -c 'echo "d ...
- SSH客户端(如PuTTY)ssh远程登录Linux非常慢的解决方法
转:http://blog.useasp.net/archive/2014/05/19/solved-the-problem-of-ssh-client-such-as-putty-remote-lo ...
- ssh远程登录linux live系统
要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...
- ssh远程登录linux服务器
ssh远程登录linux服务器 用法: ssh -l user -p port server_ip 或者 ssh -p port user@server_ip 参数: -l 后接要登录的远程系统用户名 ...
- ssh远程登录命令简单实例
ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...
- python实现ssh远程登录
python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...
- SSH(远程登录)原理
最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等.下面就用一张图来解释SSH登录验证的 ...
- ubuntu拒绝root用户ssh远程登录解决办法
ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录,解决办法就是:修改ssh配置,然后重启ssh服务即可. vi /etc/ssh/sshd_config 找到并用#注 ...
随机推荐
- Python使用双层列表推导式输出九九乘法表
print('\n'.join([' '.join(['%2d *%2d = %2d' % (col, row, col * row) for col in range(1, row + 1)]) f ...
- 2003031118—李伟—Python数据分析第七周作业—MySQL的安装以及使用
项目 MySQL的安装以及使用 课程班级博客链接 20级数据班(本) 这个作业要求链接 作业要求 博客名称 2003031118-李伟-Python数据分析第七周作业-MySQL的安装以及使用 ...
- android 下载安装包更新app
1下载 public void download(String url) { Utils.Loge("download",url); Uri uri = Uri.parse(url ...
- IT工具知识-13: 如何编辑SVG图像文件并转换为ICO图标文件
使用背景 最近做了个小软件, 但是桌面快捷方式图标不好看, 于是想着找个好看点的图标, 但是网上搜了一圈, 发现好看的几乎都要钱, 常用的话, 付费倒也不反感, 但是, 仅仅只用那么一两次, 为这个付 ...
- 【内存管理】CMA内存分配器(Contiguous Memory Allocator)
什么是CMA 参考这两篇博文,写得很好: http://www.wowotech.net/memory_management/cma.html https://www.cnblogs.com/Loye ...
- C#中字符数组,字节数组和string之间的转化(转)
原文链接:http://hi.baidu.com/endyli/item/7bf074945de35e1f934f41fe 来源: NDC(NetworkDiskClient)的界面和后台程序之间用S ...
- APP 监听手机键盘是否弹出
/** * 监听键盘是否弹出 * @param show * @param hide */ export const addEventKeyboardStatus = (show,hide)=> ...
- String的Equals()和==比较
String的Equals()和==比较 常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.JVM虚拟机为每个被装载的类型维护一个常量池.常量 ...
- JDMasking v0.1.0-beta 发布
JDMasking 全称是jdbc data masking,是一款零代码修改.无重启.基于JDBC的动态数据脱敏软件. JDMasking 主要对实现jdbc的驱动进行字节码的增强,支持对运行中的程 ...
- MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu's Sponsored Search——百度下一代搜索广告系统
简介 传统的广告最终的呈现需要经过召回与排序两个阶段,百度的搜索架构则采用三层漏斗状,如图1所示.最上面的一层用于筛选出和用户查询最相关的一部分广告,将整个候选广告集从亿级降到千级:下面两层是排序阶段 ...