我正在尝试为 GitHub 设置我的 SSH 密钥并为其创建一个新的 SSH 密钥。我已成功设置 SSH 密钥,但我希望保留这些设置并将它们保存在~/.ssh/config
不可用的配置文件中。我可以在哪里添加此密钥路径以保留配置?
答案1
这是有关如何为 GitHub 设置基于 SSH 密钥的身份验证的简短手册。请注意,GitLab 的 CLI 步骤完全相同,只需根据需要将每个出现的替换github
为gitlab
。
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 功能均可运行。
答案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
是您的私钥文件。如果您的私钥有不同的名称,可能是因为您使用了不同的加密算法(即RSA
或ECDSA
),只需将其更改为您的真实私钥文件名即可。
如果使用 RSA 算法生成密钥对,则应如下所示:
ssh-add -k ~/.ssh/id_rsa
否则,如果使用 ECDSA 生成密钥,则将显示如下内容:
ssh-add -k ~/.ssh/id_ecdsa