Git为什么需要SSH keys

因为Github需要识别提交代码的用户身份,以防他人冒充。而Github支持SSH协议,所以只要知道了SSH key的公钥,就可以实现前述需求了。

如何新建SSH keys

如果是Mac OS,可以在Terminal中进入~/.ssh目录查看是否已存在key。通常SSH key是以id_rsa开头的文件,其中id_rsa.pub是公钥,后续要添加在Github中。

ssh-key-terminal

如果不存在id_rsa文件,可通过在Terminal中输入如下命令生成:

ssh-keygen -t rsa -C "youremail@example.com"

注意

  • 记得将**“youremail@example.com”**替换为自己的邮件地址;
  • 交互过程直接回车键,使用默认即可。

在哪里添加SSH keys

在Terminal中输入如下命令,拷贝id_rsa.pub内容至剪贴板:

cat id_rsa.pub| pbcopy

然后登陆Github网站,进入Settings页面。如下图所示:

git-ssh-key-list

点击右上角的“New SSH key”按钮,在新页面的“Key”粘贴id_rsa.pub内容,即可新增SSH key。

如何配置多个GitHub账户

在新建SSH keys时根据提示,输入指定的key名称,例如:

id_rsa_{company_name}

然后配置ssh的config文件,一般在~/.ssh/config。内容如下:

Host github.com
	HostName github.com
	User {github_account1}
	IdentityFile ~/.ssh/id_rsa

Host {company_name}
	HostName github.com
	User {github_account2}
	IdentityFile ~/.ssh/id_rsa_{comany_name}

如何验证GitHub账户配置成功

可以在终端输入如下命令验证:

ssh -T git@{config-Host}

如果命令行终端返回如下内容:

Hi {github_account}! You've successfully authenticated, but GitHub does not provide shell access.

则表示配置成功。

如何指定GitHub账户下载代码

命令如下:

git clone git@{config-Host}:username/repo.git