Windows上完成SSH密钥的添加

私钥与公钥的核心定义

私钥(Private Key)和公钥(Public Key)是一对由加密算法(如RSA、ECC等)生成的"密钥对",二者存在严格的数学关联,但具备"单向不可逆"特性------通过公钥无法推导出私钥,而通过私钥可轻松生成对应的公钥。

1. 私钥:绝对保密的"个人密钥"

私钥是密钥对中"保密"的一方,必须由持有者严格保管,不能泄露给任何第三方。私钥的核心作用是"签名"和"解密"------只有持有私钥的人,才能对数据进行有效签名(证明身份),或解密用对应公钥加密的数据。

2. 公钥:可公开的"验证密钥"

公钥是由私钥推导而来的"公开"密钥,相当于你的"数字地址",可以放心地分享给任何人。

公钥的核心作用是"验证签名"和"加密"------任何人都可以用你的公钥加密数据

使用SSH方式和远程仓库通信

1,查看本地是否存有密钥信息

打开Git Bash,然后输入一下命令:

bash 复制代码
ls -al ~/.ssh

查看输出结果,如果看到类似 id_rsa.pub的文件,说明你已经有一个 SSH 密钥。

如果没有这些文件,或者你想创建一个新的密钥,请继续往下看。

2,生成新的密钥

在Git Bash中,使用以下命令来生成一个新的密钥:

bash 复制代码
// ssh-keygen(SSH密钥生成器) -t rsa (指定密钥算法为RSA(非对称加密算法))
// -b 4096 (指定密钥长度为4096位(安全性相关)) -C (给密钥添加注释,建议用邮箱)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

回车后,系统会提示你选择保存密钥的路径。默认路径为 ~/.ssh/id_rsa,然后直接按回车即可。

接下来会提示你设置一个密码(可选)。如果你不想设置密码,建议直接按两次回车跳过。

最后,你会看到类似以下的输出:

bash 复制代码
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:

3,启动 SSH 代理

SSH 代理是一个在后台运行的程序,用于管理你的 SSH 密钥。

在 Git Bash 中输入以下命令来启动 SSH 代理:

bash 复制代码
eval "$(ssh-agent -s)"

如果成功启动,你会看到类似以下的输出:

bash 复制代码
Agent pid 5287

4,将 SSH 私钥添加到 SSH 代理

输入以下命令将私钥添加到 SSH 代理:

bash 复制代码
ssh-add ~/.ssh/id_rsa

id_rsa可能需要替换为其他对应的文件名。

如果设置了密码,系统会提示你输入密码。

5,复制 SSH 公钥

直接使用cat 命令查看文件内容,并将文件内容全部复制一下。

公钥的内容类似于:

bash 复制代码
ssh-rsa AAAAB3NzaC1yc2... your_email@example.com

以下不同的平台有不同的操作,如Gitee,以及Github:

1,Gitee

首先注册并登录Gitee平台

鼠标放在右上角头像处会弹出设置选项

点击进入设置然后找到以下内容:

点击进去之后,在下图展示信息处填写信息(标题自定义,公钥处粘贴刚刚复制的内容即可)

添加完成后创建文件夹并初始化git仓库,然后执行以下命令:

bash 复制代码
git remote add origin git@github.com:username/repository.git

其中:git@github.com:username/repository.git换成下图中自己仓库的内容

上述按钮中SSH选项中的第一个链接,内容类似上述链接。

成功后尝试一下命令:

bash 复制代码
git pull origin master(此处可能需要根据自己的分支进行修改)

如果发现成功将远程仓库中的内容拉取了下来,那么恭喜,连接成功了。那么创建新文件然后提交仓库也不是问题了。

HTTPS方式和上述方式类似,不过省去了配置密钥的过程,如果是第一次尝试,应该需要输入自己的Gitee的账号和密码。

GitHub和Gitee的操作过程是一模一样的。添加完成密钥之后就可以完成上述指令。

总结:

生成密钥

启动SSH代理

将SSH私钥添加到SSH代理

将公钥配置到Git平台

然后可以进行远程仓库的拉取和推送

相关推荐
黄昏晓x1 天前
Linux----缓冲区
linux·运维·服务器
2501_924878731 天前
AdAgent 能力成熟度模型:从 L1 自动化到 L5 自主增长引擎
运维·自动化
寄存器漫游者1 天前
Linux 软件编程 命令、内核与 Shell
linux·运维·服务器
Kaede61 天前
服务器硬件防火墙和软件防火墙的区别
运维·服务器
qinyia1 天前
通过本地构建解决Cartographer编译中absl依赖缺失问题
linux·运维·服务器·mysql·ubuntu
萧曵 丶1 天前
Docker 面试题
运维·docker·容器
七牛云行业应用1 天前
3.5s降至0.4s!Claude Code生产级连接优化与Agent实战
运维·人工智能·大模型·aigc·claude
小草cys1 天前
鲲鹏920服务器安装openEuler后无法联网,但物理网线已连接
运维·服务器·openeuler
Volunteer Technology1 天前
FastDFS+Nginx
运维·nginx
李小白202002021 天前
EMMC写入/烧录逻辑
linux·运维·服务器