引言
随着 GitHub 取消了使用用户名和密码方式提交代码,使用 SSH 密钥或个人访问令牌(Personal Access Token)成为了推荐的方式。本文将详细介绍如何配置和使用 SSH 密钥向 GitHub 提交代码,特别是当您需要管理多个 SSH 密钥时的处理方法。
配置多个 SSH 密钥
1. 使用不同的文件名
您可以为不同的私钥创建不同的文件,例如 id_rsa_github
和 id_rsa_work
。这样可以方便地区分和管理不同的私钥。
2. 使用 SSH 配置文件
在 ~/.ssh/config
文件中,您可以为不同的目标主机指定不同的私钥文件。例如:
Host github.comIdentityFile ~/.ssh/id_rsa_githubHost work.example.comIdentityFile ~/.ssh/id_rsa_work
3. 使用 ssh-agent
您可以将多个私钥添加到 ssh-agent
中,它会自动尝试使用所有添加的密钥。启动 ssh-agent
并添加私钥的命令如下:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_work
4. 使用 -i
选项
在命令行中,您可以使用 -i
选项指定要使用的私钥文件。例如:
ssh -i ~/.ssh/id_rsa_github git@github.com
使用 SSH 密钥提交代码
1. 确保 SSH 密钥已添加到 GitHub 账户
首先,确保您的 SSH 密钥已经添加到 GitHub 账户中。您可以在 GitHub 的设置页面中找到 SSH 密钥管理选项。
2. 检查远程仓库 URL
使用以下命令查看当前的远程仓库 URL:
git remote -v
如果远程 URL 是 HTTPS 格式(以 https://
开头),您需要将其更改为 SSH 格式。使用以下命令更改:
git remote set-url origin git@github.com:username/repository.git
请将 username
替换为您的 GitHub 用户名,repository
替换为您的仓库名称。
3. 再次检查远程 URL
再次检查远程 URL 是否已更改为 SSH 格式:
git remote -v
4. 提交代码
现在,您可以像往常一样使用 git
命令提交代码:
git add .
git commit -m "Your commit message"
git push origin main
注意:如果您的默认分支不是 main
,请相应地更改分支名称。
5. 处理 SSH 密钥权限问题
如果您遇到类似 Permissions 0644 for '/root/.ssh/id_rsa_github' are too open
的错误提示,说明您的 SSH 私钥文件权限设置过于开放,可能会被其他用户访问,这是一个安全隐患。我们需要修改文件权限来解决这个问题。
修改文件权限
-
更改 SSH 私钥文件的权限:
chmod 600 /root/.ssh/id_rsa_github
这条命令将文件权限设置为只有文件所有者可以读写,其他用户没有任何权限。
-
如果您的
.ssh
目录权限也不正确,可以使用以下命令修复:chmod 700 /root/.ssh
这将确保只有文件所有者可以访问
.ssh
目录。 -
检查 SSH 密钥文件的所有权:
ls -l /root/.ssh/id_rsa_github
确保文件的所有者是当前用户(在这种情况下应该是
root
)。 -
如果所有权不正确,可以使用以下命令更改:
chown root:root /root/.ssh/id_rsa_github
完成这些步骤后,再次尝试 Git 操作。