1 Git配置

打开Git Bash,配置用户信息,

1# 配置用户名和邮箱
2git config --global user.name "github用户名"
3git config --global user.email "github注册邮箱"

git_config

2 SSH配置

Git和GitHub之间可以通过HTTPS、SSH、GitHub CLI等形式来连接,这里我们使用SSH方式连接。

SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在Git中一般命名为id_rsa.pub, id_rsa。公钥放到远程主机,私钥保存在本地。

当本地主机需要登录远程主机时,①本地主机向远程主机发送一个登录请求,②远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。③本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,④远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

执行下面命令生成ssh密钥文件,会提示你指定保存路径(默认是C:/Users/%USERNAME%/.ssh/id_rsa),然后确认密码。使用默认配置可以直接回车跳过,但是并不推荐,如果之前生成过密钥文件,会提示覆盖。这边指定了保存路径为C:/Users/%USERNAME%/.ssh/id_rsa.github

1# 生成 ssh 密钥
2ssh-keygen -t rsa -C "github注册邮箱"

ssh_git

GitHub设置里点击New SSH key添加公钥,在Title中填写名称,方便区分,接着以文本方式打开之前生成的.pub公钥文件,Ctrl + A全选,然后复制内容并粘贴到Key中,点击Add SSH key,确认GitHub密码后,完成配置。

ssh_github

在默认保存路径C:/Users/%USERNAME%/.ssh/下,创建一个名为config的文件,输入以下内容,IdentityFile后面是之前配置的密钥的路径。如果之前保存过其它SSH密钥,可以依照相同格式进行配置。然后回到Git Bash,执行chmod 600 ~/.ssh/config添加读写权限。

1# github
2Host github.com
3IdentityFile ~/.ssh/id_rsa.github
4User git

测试配置,出现successfully authenticated说明成功

1# 测试配置
2ssh -T git@github.com

ssh_test

如果提示Could not resolve hostname github.com: No address associated with hostname,使用IPAddress查询GitHub真实IP地址,然后添加到C:\Windows\System32\drivers\etc\hosts文件中。

1140.82.114.4 github.com

hosts

推荐使用114DNS,可以避免此情况,也无需改动hosts文件。

ssh连接超时

如果出现ssh: connect to host github.com port 22: Connection timed out问题,22端口被拒绝了,可以尝试连接443端口,在C:/Users/%USERNAME%/.ssh/config里继续添加:

1HostName ssh.github.com
2Port 443
3PreferredAuthentications publickey