一、SSH密钥检查
在生成SSH密钥之前,可以检查是否有任何现有的SSH密钥。
Mac打开终端:
- 输入
ls -al ~/.ssh
以查看是否存在现有的SSH密钥。$ ls -al ~/.ssh# Lists the files in your .ssh directory, if they exist
Windows打开Git Bash:
- 输入
ls -al ~/.ssh
以查看是否存在现有的SSH密钥。$ ls -al ~/.ssh# Lists the files in your .ssh directory, if they exist
Linux打开:
- 输入
ls -al ~/.ssh
以查看是否存在现有的SSH密钥。$ ls -al ~/.ssh# Lists the files in your .ssh directory, if they exist
检查目录列表,看看您是否已经有一个公共SSH密钥。默认情况下,GitHub支持的公钥的文件名是以下之一。
- 提示:如果您收到*~/.ssh*不存在的错误,则默认位置中没有现有的SSH密钥对。您可以在下一步中创建新的SSH密钥对。- id_rsa.pub- id_ecdsa.pub- id_ed25519.pub
二、SSH密钥生成
生成SSH密钥时,可以添加密码来进一步保护密钥。当使用密钥时,必须输入密码。如果密钥有密码,并且不想每次使用密钥时都输入密码,可以将密钥添加到SSH代理中。SSH代理管理你的SSH密钥并记住你的密码。
可以在本地机器上生成新的SSH密钥。生成密钥后,可以在GitHub.com上将公钥添加到帐户中,以启用通过SSH对Git操作进行身份验证。
Mac打开终端:
- 粘贴下面的文本,用您的GitHub电子邮件地址替换示例中使用的电子邮件。
ssh-keygen -t ed25519 -C "[email protected]"
注意:如果您使用的是不支持Ed25519算法的传统系统,请使用:ssh-keygen -t rsa -b 4096 -C "[email protected]"
这将使用提供的电子邮件作为标签创建一个新的SSH密钥。> Generating public/private ALGORITHM key pair.
当提示“输入要保存密钥的文件”时,可以按Enter键接受默认文件位置。请注意,如果之前创建了SSH密钥,ssh-keygen可能会要求重写另一个密钥,在这种情况下,建议创建自定义命名的SSH密钥。为此,请键入默认文件位置,并将id_ALGORITHM替换为你自定义密钥名称。> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
- 在提示符处,键入安全密码。
> Enter passphrase (empty for no passphrase): [Type a passphrase]> Enter same passphrase again: [Type passphrase again]
Windows打开:
- 粘贴下面的文本,用GitHub电子邮件地址替换示例中使用的电子邮件。
ssh-keygen -t ed25519 -C "[email protected]"
注意:如果使用的是不支持Ed25519算法的传统系统,请使用:ssh-keygen -t rsa -b 4096 -C "[email protected]"
这将使用提供的电子邮件作为标签创建一个新的SSH密钥。> Generating public/private ALGORITHM key pair.
当提示“输入要保存密钥的文件”时,可以按Enter键接受默认文件位置。请注意,如果之前创建了SSH密钥,ssh-keygen可能会要求重写另一个密钥,在这种情况下,我们建议创建自定义命名的SSH密钥。为此,请键入默认文件位置,并将id_ALGORITHM替换为自定义密钥名称。> Enter a file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
- 在提示符处,键入安全密码。
> Enter passphrase (empty for no passphrase): [Type a passphrase]> Enter same passphrase again: [Type passphrase again]
Linux打开:
- 粘贴下面的文本,用GitHub电子邮件地址替换示例中使用的电子邮件。
ssh-keygen -t ed25519 -C "[email protected]"
注意:如果使用的是不支持Ed25519算法的传统系统,请使用:ssh-keygen -t rsa -b 4096 -C "[email protected]"
这将使用提供的电子邮件作为标签创建一个新的SSH密钥。> Generating public/private ALGORITHM key pair.
当提示“输入要保存密钥的文件”时,可以按Enter键接受默认文件位置。请注意,如果之前创建了SSH密钥,ssh-keygen可能会要求重写另一个密钥,在这种情况下,建议创建自定义命名的SSH密钥。为此,请键入默认文件位置,并将id_ALGORITHM替换为自定义密钥名称。> Enter a file in which to save the key (/home/YOU/.ssh/ALGORITHM):[Press enter]
- 在提示符处,键入安全密码。
> Enter passphrase (empty for no passphrase): [Type a passphrase]> Enter same passphrase again: [Type passphrase again]
三、向SSH代理添加新的SSH密钥
Mac打开终端:
- 在后台启动ssh代理。
$ eval "$(ssh-agent -s)"> Agent pid 59566
根据环境,可能需要使用不同的命令。例如,在启动ssh-agent之前,可能需要通过运行sudo -s -H
来使用root访问,或者可能需要使用exec ssh-agent bash
或exec ssh-agent zsh
来运行ssh-agent。 - 如果使用的是macOS Sierra 10.12.2或更高版本,则需要修改
~/.ssh/config
文件以自动将密钥加载到ssh代理中并将密码存储在钥匙串中。- 首先,检查~/.ssh/config
文件是否存在于默认位置。$ open ~/.ssh/config> The file /Users/YOU/.ssh/config does not exist.
- 如果文件不存在,请创建该文件。touch ~/.ssh/config
- 打开~/.ssh/config
文件,然后修改文件以包含以下行。如果SSH密钥文件的名称或路径与示例代码不同,请修改文件名或路径以匹配当前的设置。Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519
备注:- 如果选择不为密钥添加密码,则应省略UseKeychain
行。- 如果看到Bad configuration option: usekeychain
错误,请在配置的Host *.github.com
部分添加一行。Host github.com IgnoreUnknown UseKeychain
- 将的SSH私钥添加到ssh代理中,并将密码存储在钥匙串中。如果使用不同的名称创建了密钥,或者如果正在添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为的私钥文件的名称。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
注意:当将SSH密钥添加到ssh代理时,--apple-use-keychain
选项会将密码存储在钥匙串中。如果选择不向密钥添加密码,请在不使用--apple-use-keychain
选项的情况下运行该命令。--apple-use-keychain
选项在苹果的标准版本的ssh-add
。在Monterey(12.0)之前的MacOS版本中,--apple-use-keychain
和--apple-load-keychain
标志分别使用语法-K
和-A
。如果没有安装苹果的标准版本ssh-add
,可能会收到错误。如果继续收到输入密码的提示,可能需要将该命令添加到~/.zshrc
文件(或bash的~/.bashrc
文件)。 Windows打开:
如果安装了GitHub Desktop可以使用它来克隆存储库,而不是处理SSH密钥。
- 在新的管理提升终端窗口(PowerShell或CMD)中,确保ssh代理正在运行。可以使用“自动启动ssh代理”说明使用SSH密钥密码”,或手动启动它:
# start the ssh-agent in the backgroundGet-Service -Name ssh-agent | Set-Service -StartupType ManualStart-Service ssh-agent
- 在没有提升权限的终端窗口中,将SSH私钥添加到ssh代理中。如果使用不同的名称创建了密钥,或者如果正在添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为私钥文件的名称。
ssh-add C:\Users\YOU/.ssh/id_ed25519
Linux打开:
- 在后台启动ssh代理。
$ eval "$(ssh-agent -s)"> Agent pid 59566
根据环境,可能需要使用不同的命令。例如,在启动ssh-agent之前,可能需要通过运行sudo -s -H
来使用root访问,或者您可能需要使用exec ssh-agent bash
或exec ssh-agent zsh
来运行ssh-agent。 - 将SSH私钥添加到ssh代理中。如果使用不同的名称创建了密钥,或者如果正在添加具有不同名称的现有密钥,请将命令中的id_ed25519替换为你的私钥文件的名称。
ssh-add ~/.ssh/id_ed25519
四、SSH公钥添加到GitHub上的帐户中
上一步生成密钥之后,会提示“Your public key has been saved in xxx”,把xxx里面的内容 复制出来。
登录GitHub,进入
Settings
页面
版权归原作者 Stongtang 所有, 如有侵权,请联系我们删除。