如何配置 SSH 密钥连接 Git 仓库
SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;是建立在应用层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
现在大多数 Git 托管平台除了使用 HTTPS 协议连接用户外,还会选择更加安全的 SSH 协议来进行 Git 服务器与用户之间的授权。
检查现有的SSH
为了向 Git 服务器提供 SSH 公钥,用户需要有自己的公钥,如果用户尚未拥有密钥,必须事先生成一份。 这个过程在所有操作系统上都是相似的。首先,你需要确认自己是否已经拥有密钥。
在正式开始之前,建议 Windows 用户使用 Git 程序包自带的 git bash 命令行工具进行操作。
进入 .ssh 目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:
# Linux
$ cd ~/ .ssh
$ ls
> id_rsa id_rsa.pub known_hosts
# Windows
$ cd C:/Users/Administrator/.ssh
$ ls
> id_rsa id_rsa.pub known_hosts
以上目录仅为默认目录,不同用户实际目录可能有所不同
关键是看有没有用 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
生成新的SSH密钥
假如没有这些文件,或者干脆连 .ssh 目录都没有,这个时候你就需要用 ssh-keygen 来进行创建。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
> The key fingerprint is:
> d0:82:24... Your Email Address 或者是 SHA256:a6d-... Your Email Address
键入命令回车后, ssh-keygen 首先会向你确认密钥的存储位置(牢记)。然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可。
查看已有密钥
现在,进行完上述操作的用户就可以将各自的公钥配置到 Git 仓库;或者发送给你的 Git 服务器管理员。
通常你只需要复制 .pub 文件的内容用于配置,或者发邮件给管理员。
# Linux
$ cat ~/.ssh/id_rsa.pub
> ssh-rsa AAAAB3NzaC1yc2... == Your Email Address
# Windows
$ cd C:/Users/Administrator/.ssh
$ cat id_rsa.pub
> ssh-rsa AAAAB3NzaC1yc2... == Your Email Address
添加SSH密钥
完成上述操作拿到你的密钥之后,你就可以将你的 SSH 密钥添加到你的 Git 仓库。
下边分别以 GitHub 和 CODING 为示例简单介绍一下如何添加 SSH 公钥。
SSH 密钥分为账户密钥和项目密钥,分别用于连接整个账户和连接单个项目。两者的设置是相似的,以下仅对账户 SSH 密钥进行说明。
注:示例图片来自各平台线上帮助文档。
GitHub平台
- 复制已经生成的 SSH 密钥。
- 如果您的SSH密钥文件的名称与示例代码不同,请修改文件名以匹配当前设置。
- 复制密钥时,请勿添加任何换行符或空格。
- 登录到你的 GitHub 账号,在任意页面的右上角,点击你的账户头像,然后单击“设置”。

- 在用户设置侧栏中,单击SSH和GPG密钥。

- 单击“新建SSH密钥”或“添加SSH密钥”。

- 在“标题”字段中,为新密钥添加描述性标签。
- 将密钥粘贴到“密钥”字段中。

- 单击“添加SSH密钥”。

- 根据提示,确认您的GitHub密码(如果没有提示可以略过)。

CODING平台
- 复制已经生成的 SSH 密钥。
- 如果您的 SSH 密钥文件的名称与示例代码不同,请修改文件名以匹配当前设置。
- 复制密钥时,请勿添加任何换行符或空格。
- 登录到你的 CODING 账号,在页面的右上角,点击你的账户头像,然后单击“个人设置”。
- 在用户设置侧栏中,单击 SSH 公钥。
- 单击右上角的“新增公钥”。

- 将第一步中复制的内容填写到「公钥内容」一栏,公钥名称可随意填写。
- 设定公钥有效期,可选择具体日期或设置永久有效。

- 单击添加,根据提示,确认您的 CODINNG 密码。
测试SSH链接
完成 SSH 密钥添加后后,你可以对你的连接进行测试,同时建立与 Git 仓库的身份认证。
# GitHub
$ ssh -T git@github.com
# CODING
$ ssh -T git@git.coding.net
在验证的过程中系统可能提示你:无法建立主机 github.com / coding.net(IP ADDRESS)的真实性。
像这样的:
The authenticity of host github.com (IP ADDRESS) can not be established.
RSA key fingerprint is 16:27:ac...
Are you sure you want to continue connecting (yes/no)?
或者这样的:
The authenticity of host github.com (IP ADDRESS) can not be established.
RSA key fingerprint is SHA256:nThbg6k...
Are you sure you want to continue connecting (yes/no)?
这个时候,你只需要验证您看到的消息中的 RSA 密钥指纹是否与 生成新的 SSH 密钥 中的 RSA 密钥指纹匹配,然后输入yes即可:
# GitHub
Hi yourname! You hove successfully authenticated.
# CODING
Hello yourname! You hove connected to Coding.net by SSH successfully!
当验证生成的消息返回并包含您的用户名,就说明 SSH 公钥设置成功。
如何配置 SSH 密钥连接 Git 仓库的更多相关文章
- [原创]SSH密钥访问Git仓库配置
SSH密钥并非为了解决拉取git仓库代码时,需要频繁输入密码的问题. SSH是一种比较安全的协议,可以用来免去远程登录Linux等服务器时需要输入密码的繁琐过程. 命令: ssh user@serve ...
- 使用TortoiseGit,设置ssh方式连接git仓库。
开始设置之前的准备:建立项目文件夹,初始化git仓库(右键 git init),右键打开 git bash ,git pull “仓库地址”, 把网站上的仓库代码拉取下来. TortoiseGit使 ...
- mac系统下用ssh方式连接git仓库
1.应用程序-终端,键入命令 ssh-keygen -t rsa -C "xxxxx@xxxxx.com" ,后面是你的邮箱地址.一直回车,生成密钥. 2.键入 open ~ ...
- Sourcetree配置ssh密钥 - git图形化工具(二)
这里主要介绍Sourcetree如何导入已经生成好的ssh私钥,如何生成ssh私钥自行百度. 如果Sourcetree没有配置ssh密钥,克隆时会提示如下错误: 仓库类型:这是一个无效的源路径/URL ...
- 使用SSH密钥连接Github
使用Github,也许大家觉得比较麻烦的就是在每次push的时候,都需要输入用户名和密码.如果使用SSH,就可以记住用户名,并创建属于自己 的密码来保证安全操作,还有神奇的一招可以“不用输入密码”哦. ...
- Jenkins连接Git仓库时候报错Permission denied, please try again.
一.连接GIT仓库报错 Failed to connect to repository : Command : stdout: stderr: Permission denied, please tr ...
- CentOS配置SSH远程连接
本文为大家介绍Centos中配置SSH远程连接的方法,只是简单配置,供初学者参考. 1.配置IP#setup 选择 NetWork configuration 选择 Device configurat ...
- Git管理多个SSH密钥,Git多帐号配置
版权声明:转载须标明本文转自严振杰的博客 https://blog.csdn.net/yanzhenjie1003/article/details/69487932版权声明:转载必须注明本文转自严振杰 ...
- github配置ssh密钥的方法
配置用户名和邮箱 初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git config --g ...
随机推荐
- JAVA OOP 编程-常用设计模式
smart-design-pattern 吼吼!10分钟内快速回顾所有设计模式及应用场景 其实,工作三年以上,精通coding,深知并发编程,熟悉OOP思想,但却因为种种原因! 没有在学习生涯初期就看 ...
- 字节数组X中存放着 0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上。
问题 字节数组X中存放着 0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上. 代码 data segment x db 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0eh,0 ...
- Python os.openpty() 方法
概述 os.openpty() 方法用于打开一个新的伪终端对.返回 pty 和 tty的文件描述符.高佣联盟 www.cgewang.com 语法 openpty()方法语法格式如下: os.open ...
- NOI Online 游戏 树形dp 广义容斥/二项式反演
LINK:游戏 还是过于弱鸡 没看出来是个二项式反演,虽然学过一遍 但印象不深刻. 二项式反演:有两种形式 一种是以恰好和至多的转换 一种是恰好和至少得转换. 设\(f_i\)表示至多的方案数 \(g ...
- JAVA设计模式 5【结构型】代理模式的理解与使用
今天要开始我们结构型 设计模式的学习,设计模式源于生活,还是希望能通过生活中的一些小栗子去理解学习它,而不是为了学习而学习这些东西. 结构型设计模式 结构型设计模式又分为 类 结构型 对象 结构型 前 ...
- Springboot使用JdbcTemplate的使用
在spring-boot-starter-jdbc这个依赖包中一共分成四个部分. core,JdbcTemplate等相关核心接口和类 datasource,数据源相关的辅助类 object,将基本的 ...
- 如何简单理解spring aop和事务
用比喻的方法理解吧: 初学者的理解,仅仅为了个人好记 aop:由三部分组成:工具箱,工人,为工人分配工具 tx事务:由四部分组成:管理者,制度,工人,向工人通知管理制度 为什么这样理解呢?个人觉得好 ...
- ACL2020 Contextual Embeddings When Are They Worth It 精读
上下文嵌入(Bert词向量): 什么时候值得用? ACL 2018 预训练词向量 (上下文嵌入Bert,上下文无关嵌入Glove, 随机)详细分析文章 1 背景 图1 Bert 优点 效果显著 缺点 ...
- 关于saltstack的job问题
问题背景:搭建一个多节点后端集群,使用saltstack作为底层管理,使用Python封装saltstack接口成逻辑层.通过逻辑层的调用实现对整个集群的运维管理. 问题:随着项目中模块的增多,发现s ...
- GitLab 转让所有者权限
GitLab 转让所有者权限 没有查看文档,自己测试了一下,可能会有纰漏,谨慎阅读 私人项目的所有者 私人项目没有所有者权限,可以认为项目命名空间就是所有者. 私人项目http://xxxxxxxxx ...