Code前端首页关于Code前端联系我们

安装和使用 Git 的快速入门图解教程:创建 SSH 密钥代码以从本地传输到 GitHub

terry 2年前 (2023-09-24) 阅读数 61 #后端开发

1。什么是 Git SSH 密钥

SSH 密钥是 SSH(Secure Shell)网络协议的访问凭证。这种经过身份验证和加密的安全网络协议用于通过不安全的开放网络进行远程机器对机器通信。 SSH 用于远程文件传输、网络管理和远程操作系统访问。缩写词 SSH 也用于描述一组与 SSH 协议交互的工具。

SSH 使用密钥对在远程各方之间启动安全连接。密钥对包含公钥和私钥。私人 vs 私人公共命名法可能会令人困惑,因为两者都被称为密钥。将公钥视为“锁”,将私钥视为“钥匙”会更有用。您向远程方提供公共“锁”以加密或“锁定”数据。然后使用存储在安全位置的“私钥”打开该数据。您可以使用安全外壳协议 (SSH) 访问 http://GitHub.com 上的存储库并将数据写入其中。通过 SSH 连接时,您可以使用本地计算机上的私钥文件进行身份验证。有关详细信息,请参阅“关于 SSH”。

2。如何创建 SSH 密钥

SSH 密钥是使用公钥加密算法生成的,最常见的是 RSA 或 DSA。在非常高的层面上,SSH 密钥是使用数学公式生成的,该数学公式使用 2 个素数和一个随机种子变量来输出公钥和私钥。这是一个单向公式,确保可以从私钥推导出公钥,但不能从公钥推导出私钥。

3。在 Mac 和 Linux 上生成 SSH 密钥

OsX 和 Linux 操作系统都具有附带 SSH 软件包的全面的现代终端应用程序。它们之间的 SSH 密钥生成过程是相同的。

3.1。运行以下命令开始生成密钥

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

此命令将使用标记为

3.2 的电子邮件创建新的 SSH 密钥。然后系统将提示您“输入用于存储密钥的文件”。您可以输入文件位置或按“Enter”接受默认文件位置。

> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

3.3。下一个提示将要求输入安全密码。密码短语为 SSH 添加了另一层安全性,并且每当使用 SSH 密钥时都需要密码。如果某人有权访问存储私钥的计算机,他们还可以访问使用该密钥的任何系统。通过向密钥添加密码来防止这种情况发生。

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

此时,将在之前输入的文件路径下生成新的 SSH 密钥。

3.4。将新的 SSH 密钥添加到 ssh-agent

ssh-agent 是 SSH 工具包中的另一个程序。 ssh-agent 负责存储私钥。将其视为钥匙链。除了持有私钥之外,它还覆盖了使用私钥签署 SSH 请求的要求,以便私钥不会被不安全地出售。

在向 ssh-agent 添加新的 SSH 密钥之前,首先通过执行以下命令确保 ssh-agent 正在运行:

$ eval "$(ssh-agent -s)"
> Agent pid 59566

运行 ssh-agent 后,以下命令将向本地 SSH 代理添加新的 SSH 密钥。

ssh-add -K /Users/you/.ssh/id_rsa

新的 SSH 密钥现已注册并可以使用!

4。在 Windows 上生成 SSH 密钥

Windows 环境没有标准的默认 Unix shell。要获得注册机的全部功能,必须安装外壳。最简单的选择是使用 Git Bash。安装 Git Bash 后,您可以在 Git Bash 环境中对 Linux 和 Mac 执行相同的步骤。您还可以在这里观看教程。

4.1。输入 ls -al ~/.ssh 检查 SSH 是否已经生成。可以输入ssh文件,说明我之前配置过。 Git安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHub

有ssh相关的文件,说明已经生成了。

4.2。如果没有,请检查用户名和电子邮件。当你写东西时,你必须签名。将 Git 代码提交到远程存储库不允许匿名。虽然git不需要这两个参数,但是配置这个东西是为了告诉别人你发出git命令的时候是谁在发帖以及你的联系方式(email),你可以看到这里我已经配置好了。 Git安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHub

4.3。如果尚未创建,请使用以下命令。此处配置全局用户名。您可以根据需要设置多个用户名

git config –global user.name ‘xxxxx’ 
git config –global user.email ‘xxx@xx.xxx’

4.4。然后输入以下命令生成密钥并按 Enter。或者也可以使用命令 $ ssh-keygen -t ed25519 -C "your_email@example.com" 。注意:如果您使用的是不支持 Ed25519 算法的旧系统,请使用:$ ssh-keygen -t rsa -b 4096 - C "vas_email@example.com"。这里的电子邮件可以是您之前在 user.email 中配置的任何电子邮件。Git安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHub

4.5。如果只想生成几个键,则直接按三个 Enter 键。您最终会在 .ssh 目录(C 盘上的用户文件夹中)中看到两个文件:id_rsa(私钥)和 id_rsa.pub(公钥)。这个过程相当于你(用户名)去商店购买一对钥匙和锁。

[root@localhost ~]# ssh-keygen -t rsa       <== 建立密钥对,-t代表类型,有RSA和DSA两种
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   <==密钥文件默认存放位置,按Enter即可
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):     <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again:     <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa.    <== 生成的私钥
Your public key has been saved in /root/.ssh/id_rsa.pub.    <== 生成的公钥
The key fingerprint is:
SHA256:K1qy928tkk1FUuzQtlZK+poeS67vIgPvHw9lQ+KNuZ4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|           +.    |
|          o * .  |
|        . .O +   |
|       . *. *    |
|        S =+     |
|    .    =...    |
|    .oo =+o+     |
|     ==o+B*o.    |
|    oo.=EXO.     |
+----[SHA256]-----+

4.6。我们通常只是生成一个名为 id_rsa 的 SSH 密钥,然后将其提交到几个不同的网站(例如:GitHub、CodeArts 或 Gitee)。但是,如果您有多个 Github 帐户,您也可以购买多个锁对。修复,以下锁定位置必须在 ~/.ssh/ 前面,以确保它在 .ssh 文件中生成。 Git安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHub

4.7。现在,使用您刚购买的新锁打开您的 Github 帐户的门并将其锁定。 ?在config文件中,配置不同的Github账户仓库指向不同的密钥文件。 Git安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHubGit安装使用快速上手图文教程:创建一个 SSH 密匙代码从本地推送到 GitHub

大家都是这样使用Git下载代码的

原理分析
1、Ssh客户端通过类似于git@github.com的地址来识别和使用:githubUserName/**repName。哪个私钥是本地的? @ 位于 git 之前,主机为 @

> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

@

> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

以及以下git 。 。
2。如果用户和主机都是git和http://github.com账户,则只能使用一把私钥。因此,必须配置用户和主机,以便每个帐户使用自己的主机。每个主机的域名都经过 CNAME 转换为 http://github.com,例如上述配置中的 Host XX-Cao.github。 com
3。配置别名后,新地址为git@XX.github.com:githubUserName/repName.git**(添加远程仓库时使用)。这样ssh连接时可以区分不同的账号

4.10。其他操作与第五章相同。 第一次使用 Git clonepush 运行命令连接 GitHub 时,会出现警告: 这个是因为Git使用SSH连接,当SSH连接首先验证GitHub服务器密钥时,您需要确认GitHub密钥指纹信息确实来自GitHub服务器。 ,输入 yes,然后按 Enter。 Git 会显示一条警告,告诉你 GitHub 密钥已添加到本机上的受信任列表中:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

此警告只会出现一次,后续操作不会再出现警告。如果您确实担心有人冒充 GitHub 服务器,您可以在输入yes 之前检查 RSA GitHub 密钥指纹信息是否与 SSH 连接提供的信息匹配。

5。 Windows Linux 子系统

现代 Windows 环境是由 windows Linux 子系统提供的。 Windows linux子系统在传统的Windows环境中提供了完整的Linux shell。如果 Linux 子系统可用,您可以在 Windows Linux 子系统中执行前面针对 Linux 和 Mac 讨论的相同步骤。

6。摘要

SSH 密钥用于验证安全连接。按照本教程,您将能够创建并开始使用 SSH 密钥。在下载或从远程存储库下载时,Git 可以选择使用 SSH 密钥而不是传统的密码身份验证。现代托管 git 解决方案(例如 Bitbucket)支持 SSH 密钥身份验证。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门