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平台

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

相关推荐
Yeats_Liao1 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
爱吃生蚝的于勒2 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
文艺理科生Owen2 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx
期待のcode2 小时前
Redis的主从复制与集群
运维·服务器·redis
wangjialelele4 小时前
Linux下的IO操作以及ext系列文件系统
linux·运维·服务器·c语言·c++·个人开发
HypoxiaDream4 小时前
LINUX-Ext系列⽂件系统
linux·运维·服务器
小毛驴8504 小时前
Linux curl 命令用法
linux·运维·chrome
李斯啦果4 小时前
【Linux】Linux目录配置
linux·运维·服务器
AI+程序员在路上4 小时前
linux下线程中pthread_detach与pthread_join区别
linux·运维·服务器
logocode_li4 小时前
说透 Linux Shell:命令与语法的底层执行逻辑
linux·运维·ssh