如何使用 ~/.ssh/config 文件为 GitHub 设置基于 SSH 密钥的身份验证?

如何使用 ~/.ssh/config 文件为 GitHub 设置基于 SSH 密钥的身份验证?

我正在尝试为 GitHub 设置我的 SSH 密钥并为其创建一个新的 SSH 密钥。我已成功设置 SSH 密钥,但我希望保留这些设置并将它们保存在~/.ssh/config不可用的配置文件中。我可以在哪里添加此密钥路径以保留配置?

答案1

这是有关如何为 GitHub 设置基于 SSH 密钥的身份验证的简短手册。请注意,GitLab 的 CLI 步骤完全相同,只需根据需要将每个出现的替换githubgitlab

1.openssh-client如果尚未安装,请安装,当然git

sudo apt update && sudo apt install -y openssh-client git

2.创建用户的 ssh 目录和将存储专用 GitHub ssh 密钥的子目录:

mkdir -p -m 700 ~/.ssh/github
  • 该选项-m 700相当于chmod 700 ~/.ssh ~/.ssh/github

3.生成 SSH 密钥(输出密钥将具有八进制权限600):

ssh-keygen -t ed25519 -C '[email protected]' -f ~/.ssh/github/id_ed25519 -q -N ''
  • -q- silent ssh-keygen; -N ''- 空(无)密码,您可以根据需要指定一个。如果是受密码保护的密钥,您可以添加-a 256(默认为 16)以通过减少其验证来提高密码的安全性。

4.复制文件内容id_ed25519.pub,使用以下命令输出:

cat ~/.ssh/github/id_ed25519.pub

5.转到你的 GitHub 帐户并按照以下步骤操作:

  • 从右上角的下拉菜单中选择设置
  • 然后从左侧菜单中选择SSH 和 GPG 密钥
  • 点击新的 SSH 密钥按钮。
  • 键入一些有意义的内容标题并将内容粘贴到字段中~/.ssh/github/id_ed25519.pub钥匙
  • 然后点击添加 SSH 密钥按钮。

在此处输入图片描述

6.如果文件不存在,则创建该文件:~/.ssh/config

touch ~/.ssh/config
chmod 600 ~/.ssh/config

编辑config文件并为新的 SSH 密钥添加以下条目:

Host github.com
    IdentityFile ~/.ssh/github/id_ed25519

7.测试设置。使用以下命令:

ssh -T [email protected]

关于这个问题——您确定要继续连接吗(是/否)?- 回答是的。如果一切顺利,你应该会收到这样的问候消息:

Hi pa4080! You've successfully authenticated, ...

如何使用 SSH 密钥。

1.如果您已经通过 HTTPS 克隆存储库,请使用以下命令:

git clone https://github.com/username/repository-name.git
git clone git://github.com/username/repository-name

进入存储库的目录并执行以下命令以通过 SSH 允许工作:

git remote set-url origin [email protected]:username/repository-name.git

2.通过 SSH 直接克隆存储库:

git clone [email protected]:username/repository-name.git

3.此外,如果你使用可变结构稳定系统此设置将正常工作。对于已克隆的存储库,只需使用打开文件夹选项,所有 VSC Git 功能均可运行。


谢谢@k..a..b答案中的例子已更新使用 RSA密钥对改为使用更安全的 ED25519。以下是一些相关参考:

答案2

该文件默认不可用。您必须创建它。请注意 SSH 密钥和~/.ssh/config是单独的文件(具有不同的用途)。

您的 SSH 密钥存储在 ~/.ssh 中(用于ls -al ~/.ssh查看所有密钥),而您的 SSH 配置存储在 中~/.ssh/config。如果您没有,请随意使用touch ~/.ssh/config来创建它。

如果您想在 GitHub/Bitbucket/GitLab 中使用密钥,请使用以下命令:

在后台启动 ssh-agent:

eval $('ssh-agent -s')

然后将 SSH 私钥添加到 ssh-agent 并将密码(如果创建)存储在钥匙串中:

ssh-add -K ~/.ssh/id_ed25519 

上述情况id_ed25519是您的私钥文件。如果您的私钥有不同的名称,可能是因为您使用了不同的加密算法(即RSAECDSA),只需将其更改为您的真实私钥文件名即可。

如果使用 RSA 算法生成密钥对,则应如下所示:

ssh-add -k ~/.ssh/id_rsa

否则,如果使用 ECDSA 生成密钥,则将显示如下内容:

ssh-add -k ~/.ssh/id_ecdsa

相关内容