赞
踩
使用 Git 关联远程仓库通常可以使用 HTTP 协议或者 SSH 协议,在使用上 SSH 只需要一次配置,之后提交操作都不需要进行用户密码验证;但是 HTTP 方式每次 Push 操作都需要验证用户名和密码。
当然,HTTP 方式更方便开源,匿名用户可以随意进行克隆和代码阅读;在个人项目使用的时候则需要反复进行 Push 操作, 可以通过配置 SSH 实现快捷的代码提交。
1️⃣ 首先需要设置绑定密钥的 Git 用户名和邮箱地址,在终端运行如下命令
git config --global user.name 'yourname'
git config --global user.email 'youremail@example.com'
如果在此之前已经设置过了,可以直接获取即可。
git config --global user.email
2️⃣ 然后,使用 ssh-keygen
命令为上述账号创建密钥,其中命令的参数选项中 -t
用于指定密钥类型;-C
用于设置注释文字,比如邮箱;还有 -f
用于指定密钥文件存储文件名。
ssh-keygen -t rsa -C "youremail@example.com"
如果执行上面命令报错,需要检查你的电脑是否安装了 openssh
首先,以管理员身份运行 Windows powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# 会得到如下内容
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
根据你的 Client 和 Server 的状态 State 执行下面的命令安装对应组件
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
安装完成之后,在终端中执行上面的 ssh-keygen
命令可以得到如下图所示的内容
- 如果命令行中省略
-f
参数会提醒输入一个文件名来保存密钥Enter file in which to save the key...
,没有特殊需求的话这里可以直接按Enter
跳过使用默认文件名。- 接着又会提示输入两次密码
passphrase
,这个密码是进行 Git Push 操作的时候要输入的密码,Github 账号无关。如果没有特殊的安全性需要这里也可以直接按Enter
跳过,不设置密码,这样可以在 Push 操作的时候不输入密码直接提交。
命令行执行完成之后,如果你也获得了上图中相似的信息那么就说明 SSH Key 已经创建成功了,红色方框中的路径地址就是你的密钥保存的文件位置。
生产了密钥之后,本地主机需要将私钥添加到 ssh-agent 服务中。
1️⃣ 首先,需要启动 ssh-agent 服务。在 Win10 中可以在管理员权限下通过 Set-Service -StartupType Automatic ssh-agent
将 ssh-agent 服务的启动类型设为自启,然后使用 Start-Service ssh-agent
命令启动当前会话下的 ssh-agent 服务。
Set-Service -StartupType Automatic ssh-agent
Start-Service ssh-agent
Get-Service ssh-agent # 查看服务是否启动成功
2️⃣ 然后使用 ssh-add
命令将新建的密钥添加到 ssh-agent 服务中
ssh-add /C/Users/regul/.ssh/id_rsa # 修改为你的密钥文件路径
下图中添加的密钥已经在当前目录下,所以直接使用了相对路径。
到此为止,本地主机的 SSH 配置已经完成了,最后将公钥添加到 Github 账户中即可。
1️⃣ 首先,拷贝第一步中生成的公钥 id_rsa.pub
中的完整内容,如下图所示
2️⃣ 然后,进入到你的 Github 的设置页面中点击 New SSH key
按钮添加公钥
3️⃣ 最后,在添加 SSH key 的页面中的 Key
栏中输入前面拷贝的公钥,Title 中也可以设置这个新 key 的名称,完成之后点击 Add SSH key
按钮即可
最后的最后,在终端里面输入如下命令,测试一下本地与Github 的 SSH key 配置是否成功
ssh -T git@github.com
显示内容和下图相似,那么恭喜你已经完成了 SSH key 的配置,后面就可以自由的进行 Push 提交操作。(如果配置完成之后还发现需要验证用户名和密码,请检查一下项目的克隆方式是 HTTPS 还是 SSH)
如果已经使用 HTTP 方式克隆了仓库,则执行如下命令需要修改远程仓库地址
git remote set-url origin <url>
Github SSH Key 的配置已经完成了,接下来一起探究一下为什么 SSH 方式可以免除 HTTP 方式中的用户验证步骤呢 ❓
为了提高安全性,在向远程仓库提交代码的时候需要对提交的内容进行加密,即通过加密算法将明文转换为密文进行安全传输。
加密的方式通常有两种:
- 对称加密:加密解密都是用的是同一个密钥
- 非对称加密:加密解密过程由一对公钥和私钥组成,这对密钥可以进行相互的加密解密。
对称加密的密钥通常是使用通信双方的共享信息生成的,所以其加密解密过程的速度更快,适用于传输大量数据的场景。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。