Github与SSH

由于多年没有用ssh方式登录Github,已经完全忘记怎么在Github上配置SSH。虽然本地存有秘钥,也不会用了。折腾了几个小时,在欢喜之余,也将这次总结纪录下来,以备不时之需。

本文主要内容是如何在Github上配置SSH。

其实Github已经有教程

生成 ssh 秘钥

其实很简单,在终端执行 ssh-keygen help命令可以看到

ssh-keygen [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
[-N new_passphrase] [-C comment] [-f output_keyfile]

-b 加密算法秘钥长度
-t 实用的加密算法类型,支持 dsa | ecdsa | ed25519 | rsa | rsa1
-N 秘钥指纹,一般用默认的就好
-C 就是commit
-f 输出的文件名

实际使用如下:

Baiya:~ baiya$ ssh-keygen -b 4096 -t rsa -C "some commit, whatever" -f github
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in github.
Your public key has been saved in github.pub.
The key fingerprint is:
SHA256:Ut3vb9oWO3lX3PwgTCIDZ8eAWygHyjH5RNDfUN+5TJc some commit, whatever

生成的秘钥存放在 ~/.ssh/ 文件夹下
生成的秘钥存放在 ~/.ssh/ 文件夹下
生成的秘钥存放在 ~/.ssh/ 文件夹下

进入.ssh文件夹下可以看到秘钥对 githubgithub.pub.

  • 也可以只输入ssh-keygen命令,然后逐个输入参数
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local

添加私钥

Baiya:Hexo baiya$ ssh-add ~/.ssh/github
Enter passphrase for ~/.ssh/github:
Identity added: ~/.ssh/github (/Users/baiya/.ssh/github)

确保ssh-agent是打开的:

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
Agent pid 59566

配置Github

配置很简单,进入Github 设置页,选择 SSH and GPG keys -> New SSH key,将上步生成的公钥copy进去即可。

可以用cat命令查看公钥内容

Baiya:~ baiya$ cat ~/.ssh/github.pub 

配之后即可以ssh方式访问github

Baiya:~ baiya$ ssh -T git@github.com

查看秘钥指纹

新版SSH默认是以SHA256格式输出:

ssh-keygen -lf ~/.ssh/id_rsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

如果需要以md5方式输出,还需要加上-E

ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

其他命令

ssh-add -l 列出加入的所有秘钥,或者以md5方式输出

ssh-add -l -E md5

参考链接

Github SSH Help
SSH keys (简体中文)
ssh-keygen 中文手册