本文记录配置github ssh key的步骤以及遇到过的问题,内容包括:
- 生成密钥
- 检查密钥
- 配置到ssh agent
- 配置到github
- 检查连接
- 下载代码
- trouble shooting
大体上讲参照官方文档就能配好,但是如果自己是第二次给别的github账号配可能会遇到别的问题,所以如果是第一次配可以直接参考官方文档(见文末)
1.生成公钥和私钥
去到指定目录(~/.ssh)
cd ~/.ssh
创建密钥
$ ssh-keygen -t ed25519 -C "your_email@example.com"
ed25519是一种算法,如果有需要也可以指定其他的 指定密钥文件的名字(生成的文件就叫这个名字)
Generating public/private ed25519 key pair.
Enter file in which to save the key:fengyi
指定密钥的密码(请记住这个密码,在未来执行某些需要输入验证)
Enter passphrase (empty for no passphrase): yourPassword
Enter same passphrase again: yourPassword
2.检查生成的密钥
在目录下查看文件
ls -al ~/.ssh
能看到两个文件:
- fengyi(私钥文件)
- fengyi.pub(公钥文件)
说明创建成功了
3. 配置到ssh agent
后台启动ssh代理
$ eval "$(ssh-agent -s)"
> Agent pid 59566
检查config文件
open ~/.ssh/config
> The file /Users/you/.ssh/config does not exist.
不存在的话可以创建
touch ~/.ssh/config
配置host的地址
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
将identifyFile改成自己公钥文件的名字,比如我这个例子里是改成fengyi 将ssh key添加到ssh agent
ssh-agent add fengyi
检查添加成功
ssh-agent -l
4.配置到github
这个没什么要注意的,可以完全参考官方文档 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
5.测试连接
ssh -T git@github.com
出现提示:
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
输入yes,如果提示以下内容,则表明配置成功,可以继续第6步下载代码,否则配置失败,请跳到第7步
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.
6.下载代码
git clone ssh-link
记得检查,一定要用ssh的链接,不然用https的就还要用gh auth login登陆
7.trouble shooting
问题1:
fatal: unable to access 'https://XXX.git/': The requested URL returned error: 403
出现这个问题的两个原因: 一个是因为用错了链接,应该用ssh的 改成正确连接之后如果还是403,那么请检查github的账号配置 问题2:出现permission denied,检查能连接上github,但是用自己的账号连接不上
ssh -vT git@github.com
如果提示ok,但是使用下面的命令提示不ok
$ ssh -T your@email.com@github.com
说明现在配置的ssh key可能是别的账号的,可以删除后重新添加
ssh-agent -D
ssh-agent add your_public_key_file_name
如果发现加回来还是旧的那个,那么可以试下把以前的不需要的ssh key的文件删除了再试试
参考文档: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
|