SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;是建立在应用层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
现在大多数 Git 托管平台除了使用 HTTPS 协议连接用户外,还会选择更加安全的 SSH 协议来进行 Git 服务器与用户之间来进行授权。
为了向 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-keygen 来进行创建。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory ‘/home/schacon/.ssh‘.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local
键入命令回车后, ssh-keygen 首先会向你确认密钥的存储位置。然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可。
Linux 的默认为
~/.ssh
目录下Windows 用户默认的在
C:\Users\Administrator\.ssh
目录下
现在,进行完上述操作的用户就可以将各自的公钥配置到 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 密钥添加到你的 Git 仓库。
下边分别以 GitHub 和 CODING 为示例简单介绍一下如何添加 SSH 公钥。
SSH 密钥分为账户密钥和项目密钥,分别用于连接整个账户和连接单个项目。两者的设置是相似的,以下仅对账户 SSH 密钥进行说明。
注:示例图片来自各平台线上帮助文档。
登录到你的 GitHub 账号,在任意页面的右上角,点击你的账户头像,然后单击“设置”。
在用户设置侧栏中,单击SSH和GPG密钥。
单击“新建SSH密钥”或“添加SSH密钥”。
将密钥粘贴到“密钥”字段中。
单击“添加SSH密钥”。
根据提示,确认您的GitHub密码。
单击右上角的“新增公钥”。
设定公钥有效期,可选择具体日期或设置永久有效。
单击添加,根据提示,确认您的 CODINNG 密码。
完成 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 公钥设置成功。
原文:https://www.cnblogs.com/wangdapang/p/10181823.html