如果你是第一次设置 SSH,那么一共有如下 5 个步骤:
- 在本地生成一个新的 SSH key;
- 把新生成的 SSH key 添加到 ssh-agent;//这样你之后使用 SSH 的时候不用每次输入 passphrase
- 把新生成的 SSH key 添加到 GitHub;
- 检查 SSH key 是否可用;
- 使用 SSH key。
如果你以前就生成过 SSH 密钥,那你可以直接从第二步走,只不过把“新生成的 SSH key”的名字换成你本地已有的 SSH key 的名字 (.pub 文件的名字)。
下面详细介绍。
1. 在本地生成一个新的 SSH key
如果你是第一次生成 SSH key,那么你在 ~/Users/用户名/
目录(这里的"用户名"是你 Mac 账户的名字)下不会有一个隐藏文件夹 .ssh
。不用担心,在你生成 SSH key 的时候,这个目录会自动创建。但是如果你以前生成过 SSH key,那么这个目录是一定存在的,所以你可以在 Terminal.app 中输入 ls -al ~/.ssh
指令来鉴别你是否有历史的 SSH key。
现在讲如何生成 SSH key。
- 打开 Terminal.app;
- 输入
ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
。例如,ssh-keygen -t rsa -b 4096 -C "123456@qq.com"
;- 当出现 "Enter a file in which to save the key," 的时候,按 return 键;
- 当出现 "Enter passphrase (empty for no passphrase)" 的时候,输入一串密码,这串密码是操作 repo 的时候用的,而不是你的 GitHub 账号密码。输入完成后按 return 键,在此输入以确认。如果你不想设置 passphrase,那就直接按两次 return 键。
- 提示 "Your identification has been saved in..." "Your public key has been saved in..." "The key fingerprint is: xxx" "The key's randomart image is: xxx" 这就完成了。
一般而言,SSH key 是以下 .pub 文件的样子:
id_rsa.pub
id_dsa.pub // DSA 密钥在 OpenSSH 7.0 的时候被废止了。如果你的操作系统使用 OpenSSH,那你需要用另一种密钥格式来设置 SSH,比方说本次使用的 RSA 密钥。
id_ecdsa.pub
如果你是第一次生成 SSH key,在你生成之后,你会看到 .ssh 目录下有两个文件:"id_rsa" 和 "id_rsa.pub"。
进入 .ssh 目录的方式:在 Finder.app 下同时按下 Shift Command G,输入
~/.ssh
默认显示隐藏文件(夹)的指令:在 Terminal.app 输入defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
默认不显示隐藏文件(夹)的指令:在 Terminal.app 输入defaults write com.apple.finder AppleShowAllFiles No && killall Finder
2. 把新生成的 SSH key 添加到 ssh-agent
很简单,在 Terminal.app 中继续按以下步骤输入代码。
- 首先输入
eval "$(ssh-agent -s)"
返回 "Agent pid ..." 就算成功;- 其次输入
ssh-add -K ~/.ssh/id_rsa
返回 "Identity added: /Users/用户名/.ssh/id_rsa (/Users/用户名/.ssh/id_rsa)"就算成功,这里的"用户名"是你 Mac 账户的名字。
3. 把新生成的 SSH key 添加到 GitHub
首先要复制刚刚生成的 SSH key 的内容:
在 Terminal.app 中输入
pbcopy < ~/.ssh/id_rsa.pub
然后在 GitHub 网页端,进入个人页面,点击右上角头像->Settings,进入设置页面,点击左栏里的 "SSH and GPG keys",点击在右上角的 "New SSH key"。在 Key 一栏内同时按下 Command V,将刚刚复制了的内容原封不动拷贝到框内(不要对框内内容做任何修改),然后直接进入 Title 一栏取一个你喜欢的名字(不能含有中文字符),例如 "MacBook Pro"。然后点击 "Add SSH key",完成添加。
4. 检查 SSH key 是否可用
继续在 Terminal.app 中输入:
ssh -T git@github.com
//注意,这个地方不能换邮箱,就要写git@github.com
正常情况下会得到:"The authenticity of host 'github.com (192.30.253.112)' can't be established. RSA key fingerprint is xxxxxxxxxx. Are you sure you want to continue connecting (yes/no)?"。输入 yes,按 return,得到 "Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts. Hi xxx! You've successfully authenticated, but GitHub does not provide shell access." 这样子就代表 SSH 可以用。
5. 使用 SSH key
可以试着在 Xcode 里面将本地工程文件托管到 GitHub 上,记得在下图的位置选择 "Clone Using SSH",把 SSH key 选择成正确的 key。如果能够正确的 push 和 pull,那就说明 SSH 在正常使用,至此 SSH 配置完成。
P.S. 如果在配置过程中遇到了一切奇奇怪怪的问题,请看这个网页。如果你想进一步操作 passphrase,请看这个网页。