SSH Keygen GitHub: 完整指南
引言
SSH(Secure Shell Protocol)是一种加密的网络协议,用于在不安全的网络上安全地进行网络服务。当您与 GitHub 等代码托管平台交互时,使用 SSH 密钥对可以提供更安全、更便捷的认证方式,而无需每次都输入用户名和密码。
本指南将详细介绍如何在您的计算机上生成 SSH 密钥对,并将其添加到 GitHub 账户,从而实现安全的 Git 操作。
1. 检查现有 SSH 密钥
在生成新的 SSH 密钥之前,最好检查一下您的计算机是否已经存在 SSH 密钥。
- 打开终端或 Git Bash (Windows)。
- 输入以下命令:
bash
ls -al ~/.ssh
这个命令会列出~/.ssh目录(SSH 密钥的默认存储位置)中的所有文件。 -
查找名为
id_rsa.pub、id_ecdsa.pub或id_ed25519.pub的文件。这些是您的公钥文件。如果存在,并且您愿意使用它们,则可以跳过生成新密钥的步骤。注意:如果您发现现有密钥,并希望使用它们,请跳到“添加您的 SSH 密钥到 GitHub”部分。如果您想生成新的密钥,可以继续。
2. 生成新的 SSH 密钥
如果您没有现有的 SSH 密钥,或者想为 GitHub 创建一个专用密钥,请按照以下步骤操作。
- 打开终端或 Git Bash (Windows)。
-
输入以下命令生成新的 SSH 密钥对。我们推荐使用 Ed25519 算法,因为它比 RSA 更安全、更高效。
bash
ssh-keygen -t ed25519 -C "[email protected]"
将"[email protected]"替换为您的 GitHub 注册邮箱地址。这有助于识别此密钥。如果您使用的是不支持 Ed25519 的旧系统或出于兼容性原因,可以使用 RSA 算法:
bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
-b 4096指定了 4096 位的密钥长度,这比默认的 2048 位更安全。 -
当提示“Enter a file in which to save the key”时:
按下Enter键以接受默认文件位置 (/c/Users/YOUR_USER/.ssh/id_ed25519或~/.ssh/id_ed25519)。
Enter a file in which to save the key (~/.ssh/id_ed25519): [Press enter] - 当提示“Enter passphrase (empty for no passphrase)”时:
您可以输入一个安全密码。每次使用 SSH 密钥时,都需要输入此密码。为了额外的安全,强烈建议设置一个密码。如果您不想设置密码,直接按Enter键即可(不推荐)。
Enter passphrase (empty for no passphrase): [Your strong passphrase]
Enter same passphrase again: [Your strong passphrase]
您的 SSH 密钥对已生成并保存在~/.ssh/目录中。公钥文件的名称通常以.pub结尾(例如id_ed25519.pub),私钥文件没有扩展名(例如id_ed25519)。
3. 将您的 SSH 密钥添加到 ssh-agent
ssh-agent 是一个程序,用于在内存中保存私钥,这样您就不必在每次使用 SSH 密钥时都输入密码。
-
启动 ssh-agent:
bash
eval "$(ssh-agent -s)"
此命令会启动 ssh-agent 并在当前 shell 中设置必要的环境变量。 -
将您的 SSH 私钥添加到 ssh-agent:
bash
ssh-add ~/.ssh/id_ed25519
如果您的密钥使用了不同的名称(例如id_rsa),请相应地更改命令。
如果设置了密码,系统会提示您输入密码。
4. 将您的 SSH 公钥添加到 GitHub
现在您已经生成了 SSH 密钥并将其添加到 ssh-agent,下一步是将您的公钥添加到 GitHub 账户。
-
复制您的 SSH 公钥:
-
macOS / Linux:
bash
cat ~/.ssh/id_ed25519.pub
# 或者,如果使用 rsa
# cat ~/.ssh/id_rsa.pub
复制终端中显示的全部内容,从ssh-ed25519或ssh-rsa开始,到您的邮箱地址结束。 -
Windows (Git Bash):
bash
clip < ~/.ssh/id_ed25519.pub
# 或者,如果使用 rsa
# clip < ~/.ssh/id_rsa.pub
此命令会将公钥内容复制到剪贴板。 -
Windows (PowerShell):
powershell
Get-Content ~/.ssh/id_ed25519.pub | Set-Clipboard
# 或者,如果使用 rsa
# Get-Content ~/.ssh/id_rsa.pub | Set-Clipboard
此命令会将公钥内容复制到剪贴板。
-
-
登录 GitHub:
打开您的网络浏览器并登录到您的 GitHub 账户。 -
导航到 SSH and GPG keys 设置:
- 点击右上角的个人资料照片,然后点击“Settings”。
- 在左侧导航栏中,点击“SSH and GPG keys”。
-
添加新的 SSH 密钥:
- 点击“New SSH key”或“Add SSH key”按钮。
- 在“Title”字段中,为您的密钥起一个描述性的名称(例如,“My Laptop Key”或“Work PC Ed25519 Key”)。
- 在“Key”字段中,粘贴您之前复制的公钥内容。确保粘贴的是整个字符串,不要有任何额外的空格或换行符。
- 点击“Add SSH key”。
- 如果提示,请输入您的 GitHub 密码进行确认。
5. 测试您的 SSH 连接
成功将公钥添加到 GitHub 后,您可以测试连接以确保一切正常。
- 打开终端或 Git Bash (Windows)。
- 输入以下命令:
bash
ssh -T [email protected] - 当第一次连接到 GitHub 时,系统可能会询问您是否确定要继续连接。输入
yes并按Enter。
The authenticity of host 'github.com (IP_ADDRESS)' can't be established.
RSA key fingerprint is SHA256:SOME_FINGERPRINT.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
您应该会看到一条欢迎消息,例如:
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
其中USERNAME是您的 GitHub 用户名。如果看到此消息,则表示您的 SSH 连接已成功建立!
6. 故障排除
如果您在设置过程中遇到问题,请检查以下几点:
- 权限问题:确保
~/.ssh目录及其中的文件具有正确的权限。~/.ssh目录权限应为700(drwx------)。- 私钥文件(例如
id_ed25519)权限应为600(-rw-------)。 - 公钥文件(例如
id_ed25519.pub)权限应为644(-rw-r--r--)。
您可以使用chmod命令来更改权限:
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
- ssh-agent 未运行或未添加密钥:确保
ssh-agent正在运行,并且您的私钥已通过ssh-add命令添加到其中。 - GitHub 公钥未正确复制:再次检查您复制并粘贴到 GitHub 的公钥是否完整且没有修改。
- Git 仓库配置:确保您的 Git 仓库配置为使用 SSH 克隆 URL,而不是 HTTPS URL。例如:
- SSH:
[email protected]:USERNAME/REPOSITORY.git - HTTPS:
https://github.com/USERNAME/REPOSITORY.git
您可以使用git remote -v查看当前远程配置,并使用git remote set-url origin [email protected]:USERNAME/REPOSITORY.git进行更改。
- SSH:
- 防火墙或代理:有时防火墙或代理设置可能会阻止 SSH 连接。检查您的网络配置。
希望这份指南能帮助您成功设置 SSH Keygen 并与 GitHub 进行安全高效的交互!