在 Windows 上添加 SSH 密钥的步骤如下:
1. 检查是否已有SSH密钥
首先,打开 Git Bash 或 Windows Terminal,输入以下命令查看是否已有 SSH 密钥:
bash
ls -al ~/.ssh
如果你看到 id_rsa
和 id_rsa.pub
(或其他的文件名以 .pub
结尾),则已经存在 SSH 密钥。
2. 生成新的SSH密钥(如果没有)
如果没有现有密钥,你可以生成一个新的 SSH 密钥:
bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 替换
your_email@example.com
为你的邮箱。 - 如果询问你要保存密钥的位置,直接按
Enter
以使用默认位置(~/.ssh/id_rsa
)。 - 如果提示输入密码短语,可以选择输入一个(提供额外的安全性),或直接按
Enter
为空。
3. 添加SSH密钥到ssh-agent
确保 ssh-agent
正在运行,并将 SSH 密钥添加到 ssh-agent:
bash
# 启动 ssh-agent
eval $(ssh-agent -s)
# 添加 SSH 密钥
ssh-add ~/.ssh/id_rsa
4. 将SSH密钥添加到GitHub/GitLab等平台
接下来,你需要将生成的公钥添加到你的 GitHub 或 GitLab 账户中:
-
复制公钥:
bashclip < ~/.ssh/id_rsa.pub
这个命令会把公钥复制到剪贴板。
-
添加到 GitHub:
- 登录到你的 GitHub 帐户。
- 进入 Settings > SSH and GPG keys > New SSH key。
- 在 "Title" 中输入描述,粘贴公钥到 "Key" 字段,然后点击 "Add SSH key"。
5. 测试SSH连接
完成上述步骤后,可以测试 SSH 连接是否成功:
bash
ssh -T git@github.com
如果提示 Hi username! You've successfully authenticated, but GitHub does not provide shell access
,说明设置成功。
常见错误和解决步骤:
如果在使用 ssh -T git@github.com
命令时出现"Permission denied (publickey)"的错误,说明 SSH 身份验证失败,可能是由于以下几种原因造成的:
-
确认SSH密钥存在 :
再次检查你的 SSH 密钥是否存在于
~/.ssh/
目录下:bashls -al ~/.ssh
确认你的公钥(一般是
id_rsa.pub
或id_ed25519.pub
)确实存在。 -
确保SSH密钥已添加到ssh-agent :
确保 SSH 代理已启动并且将密钥添加到代理中。输入以下命令:
basheval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa # 或者你的私钥文件名
注意:
如果在window cmd中运行,无法使用
eval $(ssh-agent -s)
,需要使用命令start-ssh-agent.cmd
来启动 ssh-agent,ssh-add ~/.ssh/id_rsa
命令的使用方法一致 -
检查SSH公钥是否正确添加到GitHub :
确保你已将正确的公钥添加到 GitHub 帐户中。再去 GitHub 设置里查看:
- 登录 GitHub。
- 进入 Settings > SSH and GPG keys。
- 确保你看到的公钥是你刚生成或使用的那把。
-
确认使用的GitHub邮箱 :
确保你的 GitHub 帐号与用来生成 SSH 密钥时使用的电子邮件匹配。不同的 SSH 密钥对应不同的 GitHub 帐号。
-
编辑SSH配置(可选) :
如果你的公钥的文件名不是
id_rsa
,你可能需要在~/.ssh/config
文件中配置它。创建或编辑~/.ssh/config
文件,添加如下内容:bashHost github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519 # 或者你的私钥的名称
保存并关闭文件。
-
更改文件权限 :
确保
.ssh
目录和密钥文件的权限正确。可以通过以下命令查看并修改权限:bashchmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa # 或者你的私钥文件名
-
测试SSH连接 :
完成上述步骤后,再次测试 SSH 连接:
bashssh -T git@github.com
其他调试步骤:
-
终端输出更多调试信息 :
使用没那么简约的方式来获得更多、详细的信息:bashssh -vT git@github.com
这会显示关于连接过程的所有详细信息,有助于分析出错原因。
注意事项
- 每次修改密钥都需要重新添加到 ssh-agent。
- 确保不会公开你的私钥(如
id_rsa
),只需分享公钥(id_rsa.pub
)。