Git 添加 SSH 密钥、多个 SSH 密钥教程
本文最后更新于 272 天前,其中的信息可能已经有所发展或是发生改变。
内容目录

教程仅详细说明如何创建密钥,至于如何将密钥上传至 Git 托管平台请查阅对应平台的帮助文档。

创建密钥

创建密钥推荐在 Linux 上操作,例如 Debian 等,因为其自带相关工具不用额外操作。

密钥创建命令:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t:这个是密钥格式,一般来讲可以用 ed25519,部分老平台可能不支持这个算法,此时可以换成 rsa
  • -C:此参数实际作用为添加注解,用于区分不同密钥,简单来讲就是取个名字。

创建过程:

madray@NAS:~$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/madray/.ssh/id_ed25519): # 这个是密钥保存路径,可以换个路径,括号内的是默认路径
Enter passphrase (empty for no passphrase): # 留空即可,直接回车
Enter same passphrase again: # 留空即可,直接回车
Your identification has been saved in /home/madray/.ssh/id_ed25519
Your public key has been saved in /home/madray/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:... your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
...
+----[SHA256]-----+

假设这里没有更换密钥保存路径,即 /home/madray/.ssh/id_ed25519,那么生成完成之后,在 /home/madray/.ssh 目录下会生成两个文件:

  • id_ed25519:这个是私钥文件,下载下来妥善保存,可以任意修改文件名。
  • id_ed25519.pub:这个是公钥文件,内容用于上传到 Git 托管平台。

本地配置 SSH

创建完 SSH 密钥之后,就需要保存到本地然后应用了,这里介绍一种可以配置多个 Git 托管平台使用不同密钥的方法。

首先创建目录 ~/.ssh(Windows 下是类似 C:Usersxxx.ssh 的目录),然后创建文件 .config

# gitee
Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_ed25519
    Port 22

# github
Host github.com
    HostName ssh.github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_ed25519
    Port 443

# gitlab
Host gitlab.sgpublic.xyz
    HostName gitlab.sgpublic.xyz
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab_ed25519
    Port 14022

其中对于每个小节的解释如下:

  • Host:Git 仓库连接中的主机域名,例如 git@github.com:user/repo 中 Host 为 github.com
  • HostName:设置此 Host 实际连接时使用的主机域名,默认使用 Host。例如上面配置文件中 github 部分,配置 github.com 实际连接的时候使用域名 ssh.github.com 且端口设置使用 443,则可以在代理软件仅代理常用端口时让连接走代理。
  • PreferredAuthentications:首选认证方式,此处固定配置为 publickey
  • IdentityFile:就是所使用的私钥文件了,就是前文中生成的私钥文件。如上所示的示例配置文件中虽然使用类似 ~/.ssh 这种类 Unix 才能使用的路径,但在 Windows 中也是适用的。
  • Port:设置实际链接时使用的端口,默认为 22。

如此就完成了不同 Git 托管平台使用不同密钥了。

测试配置

使用以下命令测试(示例为测试 github.com 连接性,用户名为 git):

C:Userssgpub>ssh -T git@github.com
Hi sgpublic! You've successfully authenticated, but GitHub does not provide shell access.

关于用户名是什么的问题,具体取决于 Git 托管平台,常规来讲例如 github.comgitee.com 等使用的是 git

暂无评论

发送评论 编辑评论


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