一、前言:
在公司需要将一个文档推送到GitHub仓库,由于Github对Https的推送已经移除了对密码认证的支持(2021.8.13),所以想要进行身份验证就只能使用两种方式:
- 使用Persional Access Token(PAT)
- 使用SSH认证
PAT认证太麻烦了,每次都要输入,这里就主要介绍使用SSH认证的方式。
二、Github-SSH认证
生成 SSH 密钥:
打开终端(Git Bash 或其他终端)。
运行以下命令生成 SSH 密钥:
ssh-keygen -t ed25519 -C "your_email@example.com"
按提示保存密钥(默认路径即可)。
设置一个安全的密码(可选)。
(其实一直回车就好了)
将 SSH 密钥添加到 SSH 代理:
启动 SSH 代理:
eval "$(ssh-agent -s)"
添加 SSH 私钥到代理:
ssh-add ~/.ssh/id_ed25519
如果使用的是 RSA 密钥,替换为:
ssh-add ~/.ssh/id_rsa
- 将 SSH 公钥添加到 GitHub:
复制公钥内容:
cat ~/.ssh/id_ed25519.pub
或(如果是 RSA 密钥):
cat ~/.ssh/id_rsa.pub
登录 GitHub,进入 Settings -> SSH and GPG keys。
点击 New SSH key,将公钥内容粘贴到 Key 字段中,然后保存。
将远程仓库 URL 改为 SSH:
检查当前远程仓库 URL:
git remote -v
如果 URL 是 HTTPS 的(如 https://github.com/...),将其改为 SSH:
git remote set-url origin git@github.com:Vsonic12138/Draw.io.git
- 推送代码:
之后就可以直接推送代码,无需输入用户名和密码:
git push -u origin main
三、问题解决
在第二节在GitHub上配置好SSH Key之后,可以尝试在终端当中输入:
ssh -T git@github.com
用以测试配置是否成功,如果出现类似:
Hi Vsonic12138! You've successfully authenticated, but GitHub does not provide shell access.
说明可以成功进行之后的仓库推送了,但是我出现了这样的提示:
说明访问被端口22拒绝了,此时我们可以通过配置.ssh文件来进行端口的替换。
终端当中键入:
nano ~/.ssh/config
编辑这个配置文件如下:
Host github.comHostname ssh.github.comPort 443
将端口替换为443即可。
四、参考链接
https://paugram.com/tech/github-ssh-connection-closed-problem-with-proxy.html
https://chatgpt.com/share/677cc184-a598-8010-9a4b-5573460d97c0