用 SSH 推拉 GitHub 并实现多账户切换
Warning本文发布于 2023/01/13,内容可能已过时。
为什么要 SSH
一开始使用 git 时是在 VSCode 上集成的,初次 push 时填好 github 账号密码之后,之后都不用填密码了。但网上都说用 HTTPS clone 的仓库推拉的时候都要输入密码,原来是有一个配置
IDE 已经帮忙把账号密码存在全局了,而且设置的用户名和邮箱也是全局的,所以就 “新手友好” 多了
而 SSH 协议在初次配置好之后,前后都不用输入账号密码,也还能保证数据的安全。这倒没什么,主要是我想用两个 GitHub 账号来练习一下,两个不同的邮箱注册。但这时问题就在,开始时我都把账号信息设全局了,这要怎么以另一个 git 身份来推拉呢……?
正好看到在一台电脑上同时使用多个 github 账号中使用到了 SSH,于是就跟着设置好了,还顺便升级了下 git 版本)
更详细的说明可见 SSH 以下终端 windows 下要在 Git Bash 的命令窗口下执行 (或是 powershell
设置 SSH
取消全局设置
先删除掉之前的配置:
也可以直接去配置文件 C:\Users\{name}\.gitconfig
或是在 ~/.gitconfig
中删除掉
创建新的 ssh 密钥
这时终端会停在 Enter passphrase (empty for no passphrase):
,这里只要选默认的回车就好。最后终端会输出:
表示密钥生成成功。这时在 ~/.ssh/
下会看到两个文件:name
表示生成的私钥,name.pub
表示生成的公钥
添加私钥到 ssh 中
打开 ssh-agent
此时一般会输出类似如下的:
然后是添加私钥到账户中:
此时会输出:
将公钥添加到 GitHub 账户
首先先复制公钥 name.pub
的内容,不能有多余的字符
然后打开 GitHub:
- 右上角下拉面板选择 Settings
- 左侧选择 SSH and GPG keys
- 点击 New SSH key
- 随便起一个 title
- 把公钥粘贴到下面
基本就大功告成了~
测试与 github 的 ssh 连接
终端输入:
首次连接需要用户确认:
输入 yes 就好:
如果 name 是你的 github 用户名,就说明连接成功了
其中,有可能会报 Connection reset by 192.30.255.112 port 22,这时需要在 ~/.ssh/
下新建 config
文件并编辑:
更改仓库的远程连接方式
到 github 仓库的 clone 选项中选中 ssh 链接并复制,终端 cd 到本地仓库:
然后检查 git 的远程仓库:
如果是:就大成功
设置多用户
git 多用户配置
其实就重复生成密钥到把公钥添加到各自的 github 仓库的步骤,注意密钥名称得不重复
然后是重点:在 ~/.ssh/
下新建 config
文件并编辑:
这样,连接的时候就要指定用户:
回复分别是 ID1 和 ID2 的 github 名,就表示连接成功了
clone 仓库就变成了:
设置多用户 git 仓库的 name 和 email
虽然可以每次都在仓库下
但这也太不优雅了,于是有一个开源的 npm 包:git 多用户切换设置 gum。前提得先装了 Node.js)或许有别的可以代替,那再找找看吧
然后添加用户:
这样的。切换用户时,在仓库下执行:
更多详见 Gum#RADME