通过SSH来认证Github

使用linux的时候,想操作远程仓库的时候,难免会遇到认证的问题。 github在2021.8.13就停止了对远程账密认证的支持。 这里需要在本地创建一个ssh的加密。

创建秘钥对ssh-keygen

使用ssh-keygen命令创建一个ssh密钥对

ssh-keygen -t rsa -b 4096 -C "woshimiyaodui"

ssh-keygen 是生成SSH密钥对的命令,用于创建公钥和私钥。 基本语法

ssh-keygen [options]

options:
    -t 指定密钥类型
        rsa : RSA 算法,适用于大多数情况,密钥长度通常为 2048 或 4096 位。
        ecdsa:椭圆曲线算法,提供较高的安全性,密钥长度较小(256 位、384 位等)
        ed25519:EdDSA 椭圆曲线算法,性能更好且安全性更高,推荐使用。
        dsa:DSA 算法,但由于安全性不足,不推荐使用。

    -b 指定密钥长度
        用于指定密钥的长度(位数),一般配合 `-t` 参数使用。
        对于 RSA 密钥,推荐使用至少 2048 位,建议使用 4096 位。
        对于 `ed25519` 密钥,密钥长度固定,无需指定。

    -f 指定文件名
        指定生成的密钥文件的存储路径和文件名。
        默认情况下,密钥存储在 `~/.ssh/id_rsa`(私钥)和 `~/.ssh/id_rsa.pub`(公钥)

    -N 指定密钥密码
        用于为私钥设置密码保护,增加密钥的安全性。
        密钥加密时,每次使用(如登录服务器)都需要输入这个密码。如果不希望加密私钥,可以设置为空密码(即 -N "")

    -q 静默模式
        该参数使 ssh-keygen 命令在运行过程中不显示输出信息,静默生成密钥对。

    -C 添加注释
        为密钥添加注释,通常用来注明密钥的用途或对应的邮箱地址
        该注释会被包含在公钥中,方便识别密钥来源

启动 SSH 代理添加密钥

确保ssh代理正在运行,并将私钥添加到代理中

eval "$(ssh-agent -s)" # 启动 SSH 代理 
ssh-add ~/.ssh/id_rsa # 将密钥添加到代理

确认密钥已经添加

ssh-add -l # 查看密钥列表

Github添加公钥

获取公钥内容

cat ~/.ssh/id_rsa.pub

登录github-点击右上角头像-点击setting-选择 SSH and GPG Keys – 点击New SSH Key

然后在Title文本框中输入信息用以区分,将公钥内容粘贴到Key文本框中

image.png

点击 Add SSH key添加,如果Key格式没有问题,应该能将该公钥添加到github账号中。 如果出错,检查key的内容是否为 pub后缀 文件的内容,为公钥。

测试连接

使用以下命令测试 SSH 是否可以成功连接到 Github

ssh -T git@github.com

如果连接成功,能看到类似下图中的输出

image.png

删除密钥对

SSH密钥对的不常用性,容易导致生了不管的现象。 不用的SSH密钥对如果想要删除,必然要耗费使用者的一番心思。 提前思考如何删除密钥对是很有必要的

删除SSH密钥对涉及到删除本地的公钥和私钥文件,以及删除远程服务器或平台上存储的公钥。

先从本地列出密钥文件

ls ~/.ssh/

如果在ssh中加载了密钥,确保代理不再加载要删除的密钥,要从 SSH 代理中移除密钥

ssh-add -d ~/.ssh/id_rsa

然后删除掉 id_rsa 和 id_rsa.pub 文件 并删除掉 SSH 配置文件 ~/.ssh/config 中的相关配置 删除与已删除密钥对应的配置块,例如github:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github

还需要从远程平台删除公钥,这一步是可选的。

DLC :使用 SSH URL 配置仓库

github SSH URL的格式通常如下

image.png

换言而之,格式通常为:

git@github.com:username/repository.git

添加远程仓库使用指令

git remote add origin [SSH URL]

# 如果配置仓库时使用了HTTPS URL,可以修改为SSH URL
git remote set-url origin [SSH URL]

# 使用以下指令检查当前远程仓库的URL
git remote -v

DLC2 :SSH 密钥对

SSH密钥对(SSH Key Pair)是用于加密通信的密钥,它们由**私钥**和**公钥**组成,并广泛应用于安全的身份验证,如通过 SSH 访问远程服务器或使用 Git 进行代码操作。SSH 密钥对的主要作用是提供**基于公钥的身份验证**,避免使用密码进行身份验证,从而提高安全性。

**公钥 (Public Key)**:

公钥是密钥对中的一部分,可以安全地共享给其他人或系统。
当你生成 SSH 密钥对后,可以将公钥上传到服务器或系统(例如 GitHub)进行验证。
公钥通过复杂的数学算法与私钥配对,但无法通过公钥反推出私钥。

**私钥 (Private Key)**:

私钥应保密存储,绝不应该与他人共享。
私钥用于加密客户端的认证请求,并通过服务器端存储的公钥进行解密和验证。
私钥通常保存在客户端设备上(例如你的电脑),并且你可以通过加密保护它,避免未经授权的访问。

SSH 密钥对的工作原理:

SSH 密钥对使用的是一种非对称加密技术。以下是基于公钥的 SSH 身份验证的工作流程:
  1. 密钥生成:客户端使用 ssh-keygen 命令生成一对 SSH 密钥(公钥和私钥)。
  2. 公钥部署:将公钥上传到服务器或服务平台(如 GitHub)。该平台将公钥存储在指定的位置(如 ~/.ssh/authorized_keys 文件)。
  3. 连接请求:客户端尝试通过 SSH 连接到服务器时,服务器会检查客户端是否有与其存储的公钥匹配的私钥。
  4. 认证流程
    • 服务器生成一个随机数(challenge),使用客户端提供的公钥加密,并将加密后的随机数发送给客户端。
    • 客户端使用私钥解密这个随机数,然后将解密后的结果返回给服务器。
    • 服务器验证解密后的随机数与原始生成的是否一致。如果一致,则认证通过,允许连接。

这种方式不需要每次都输入密码,因此非常安全且便捷,特别适合自动化和远程工作流。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇