github使用SSH认证方法

微信扫一扫,分享到朋友圈

github使用SSH认证方法
使用SSH密钥(推荐,更安全)
一劳永逸且更安全的方法是使用SSH密钥进行认证。它的原理是生成一对非对称加密的密钥(一个私钥保存在自己电脑上,一个公钥上传到GitHub),从而建立您电脑和GitHub之间的信任关系。

下面的流程图概括了配置SSH方式的主要步骤:

flowchart TD
    A[开始: 检查现有远程仓库协议] --> B{使用SSH方式}
    B --> C[生成SSH密钥对]
    C --> D[添加公钥到GitHub账户]
    D --> E[修改本地仓库远程地址为SSH]
    E --> F[测试推送]
生成SSH密钥对:
在终端中运行以下命令(将 your_email@example.com 替换为您在GitHub注册的邮箱):

bash
ssh-keygen -t ed25519 -C "your_email@example.com"
生成过程中,直接按回车键使用默认保存路径和空密码即可。完成后,会在您的 ~/.ssh/ 目录下生成两个文件:id_ed25519(私钥,务必保密)和 id_ed25519.pub(公钥)。

添加公钥到GitHub账户:

使用命令 cat ~/.ssh/id_ed25519.pub 查看并复制公钥文件的全部内容。

登录GitHub,点击头像进入 Settings > SSH and GPG keys。

点击 New SSH key,取个易识别的标题(如My Laptop),然后将复制的公钥内容粘贴到Key区域,最后点击添加。

修改本地仓库的远程地址:

进入您的项目目录,检查当前的远程仓库地址:

bash
git remote -v
如果显示的是以 https:// 开头的地址,需要将其切换为SSH协议。请使用以下命令(注意将 USERNAME 和 REPOSITORY 替换为您的实际信息):

bash
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
完成以上配置后,再尝试 git push,应该就不再需要输入用户名和密码
接下来的步骤提示
1. 保存密钥文件的路径(按回车使用默认)
text
Enter file in which to save the key (/root/.ssh/id_ed25519):
建议:直接按回车使用默认路径

2. 设置密钥密码(可选)
text
Enter passphrase (empty for no passphrase):
建议:

为了完全免密推送,直接按回车(不设置密码)

如果对安全性要求很高,可以设置一个密码(但每次推送仍需输入此密码)

3. 确认密码(如果上步设置了密码)
text
Enter same passphrase again:
直接按回车(如果上步没设置密码)

生成成功后的操作
生成完成后,您会看到类似这样的信息:
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx feimao5787@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
|          ...    |
|         . . .   |
|        . . . .  |
|       . . . . . |
|        S . . . .|
|       . . . . .o|
|      . . . . .o.|
|     . . . . .o..|
|      . . . .Eo+.|
+----[SHA256]-----+
下一步:将公钥添加到 GitHub
生成成功后,执行以下命令查看并复制公钥:

bash
# 查看公钥内容
cat ~/.ssh/id_ed25519.pub

# 或者直接复制到剪贴板(如果系统支持)
cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
公钥内容看起来像这样:

text
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx feimao5787@gmail.com
请复制整个公钥内容,然后按照之前的步骤添加到 GitHub。
验证 SSH 连接
添加公钥到 GitHub 后,测试连接:

bash
ssh -T git@github.com
如果成功,您会看到:

text
Hi feimao5787! You've successfully authenticated, but GitHub does not provide shell access.
现在请继续完成密钥生成过程,然后告诉我您进行到哪一步了!
这是正常的SSH安全验证!GitHub的服务器指纹您第一次连接,所以系统要求您确认。

正确的操作
输入 yes 然后按回车:

bash
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
验证指纹
您看到的指纹 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU 是 正确的GitHub ED25519密钥指纹。

您可以在 GitHub官方文档 中验证这个指纹:

text
SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU (ED25519)
完全匹配!所以可以安全地输入 yes。

后续步骤
输入 yes 后,您应该会看到:

text
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi feimao5787! You've successfully authenticated, but GitHub does not provide shell access.
这表示SSH连接成功!

最后一步:切换远程仓库协议
现在将您的仓库从HTTPS切换到SSH:

bash
# 检查当前远程地址
git remote -v

# 切换到SSH(使用您的实际用户名和仓库名)
git remote set-url origin git@github.com:feimao5787/maccmsrust.git

# 再次验证远程地址
git remote -v
现在尝试推送,应该就不需要用户名和密码了:

bash
git push origin main
请先输入 yes 完成SSH连接验证,然后告诉我结果!
切换到 SSH 协议
执行以下命令:

bash
# 切换到 SSH 协议
git remote set-url origin git@github.com:feimao5787/maccmsrust.git

# 验证是否切换成功
git remote -v
切换成功后,您应该看到:

text
origin  git@github.com:feimao5787/maccmsrust.git (fetch)
origin  git@github.com:feimao5787/maccmsrust.git (push)
测试推送
现在测试一下是否还需要密码:

bash
git push origin main
如果还有问题,检查 SSH 代理
如果仍然需要密码,可能需要启动 SSH 代理:

bash
# 启动 SSH 代理
eval "$(ssh-agent -s)"

# 添加您的私钥到代理
ssh-add ~/.ssh/id_ed25519
验证 SSH 连接(确保之前输入了 yes)
bash
ssh -T git@github.com
应该显示:

text
Hi feimao5787! You've successfully authenticated, but GitHub does not provide shell access.
总结步骤
切换远程协议:git remote set-url origin git@github.com:feimao5787/maccmsrust.git

验证切换:git remote -v

测试推送:git push origin main

请先执行切换命令,然后测试推送是否还需要密码!
github使用SSH认证方法插图
展开阅读全文
上一篇

hugo完整的文章更新和修改文件工作流步骤

下一篇

安装完hugo无法使用1313测试解决办法

你也可能喜欢

  • 暂无相关文章!

评论已经被关闭。

插入图片
返回顶部