在看了几十篇博文,经历了一天一夜的挣扎后,基本把能踩的坑都踩了个遍,终于能够用SSH进行Github多个账号的无缝切换,记录于此。话不多说,先来分享一波成功的喜悦:
如果你在Github多个账号设置SSH的过程中遇到了以下问题:
或者Ping github.com请求超时,本文会有一定借鉴意义。
先说一下我的环境是:Windows11,在此基础下进行Github多个账号设置SSH
首先win+X打开windows终端(管理员),输入 cd ~/.ssh
如果提示No such file or directory,可以自己在C:\Users\用户名\ 文件夹下自己新建一个名为.ssh的文件夹,然后再在终端输入cd ~/.ssh,如果依旧提示No such file or directory,以及在接下来的过程中凡是出现No such file or directory,都可以采取以下方法:
将cd ~/.ssh命令中的路径替换为完整路径,即:cd C:/Users/用户名/.ssh
(用户名为你自己电脑的用户名)
如果用户名中有空格,则需要将用户名用双引号引起来,即:cd C:/Users/“用户名”/.ssh
成功进入.ssh文件夹后,输入以下代码生成不同账号的SSH key
ssh-keygen -t rsa -C "注册Github时用的邮箱1" //转入完成后一直回车,默认会生成id_rsa‘(私钥)以及id_rsa.pub(公钥)两个文件
ssh-keygen -t rsa -C "注册Github时用的邮箱2" -f C:/Users/用户名/.ssh/id_rsa_person/ //转入完成后一直回车,则会生成id_rsa_person以及id_rsa.person.pub两个文件
之前参考的文章只说了将新的私钥添加到SSH agent中,但是实际上,每个要用到的私钥最好都添加一遍,命令如下:
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_person
如果提示Could not open a connection to your authentication agent,那么尝试以下命令后再输入以上命令:
ssh-agent bash
如果提示No such file or directory,且修改为全路径无效,或者提示the agent has no identities,则需要检查ssh-agent服务是否启动:
get-service ssh*
如过Status为Stopped,启动服务:
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
输入ssh-add -l 检查:
成功后可重新输入上面的两行代码,将私钥添加到SSH agent中
在~/.ssh目录下找到config文件,如果没有就创建:
echo love >>config
用记事本打开config文件,修改参照以下:
配置文件参数:
Host:别名,Host 可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
Port:端口 (22(default))
HostName:要登录主机的主机名
User:登录名
PreferredAuthentications:强制使用 Public Key 验证(no(default)/yes)
IdentitiesOnly :只接受SSH key 登录
IdentityFile:指明上面User对应的 identityFile 路径 (就是私钥)
保存文件为UTF-8格式并退出,如果此时该文件夹既有config又有config.txt(后缀名需要显示出来),需要删掉原来的config,并去掉config.txt的后缀.txt。
**注意:**1.有可能会提示line 1: Bad configuration option: \377\376h、terminating, 1 bad configuration options等错误,这是因为没有将config文件保存为不含BOM的UTF-8格式。
2.保险起见,我又将该配置加入了 I:\Program Files\Git\etc\ssh\ssh_config (Git bash 的安装路径) (如果没有安装GIT,此步可省略)
打开Github官网,点击右上角用户头像,选择settings
新建一个SSH Key,将 C:\Users\用户名.ssh\id_rsa.pub(可以用记事本打开)的公钥内容复制进去,并且取一个名字(建议为登录设备的名字)。然后Sign out,登录另一个账号,重复步骤,将 C:\Users\用户名.ssh\id_rsa_person.pub的公钥内容复制进去
ssh -T [email protected] \\出现Are you sure you want to continue connecting (yes/no/[fingerprint])? 输入y即可
ssh -T [email protected] \\出现Are you sure you want to continue connecting (yes/no/[fingerprint])? 输入y即可
**注意:**1.如果提示Connection closed by remote host、Permission denied (publickey)、Could not resolve hostname github.com、ssh_dispatch_run_fatal、kex_exchange_identification、connection time out、connection aborted、Connection closed by remote host等一系列问题,或者Ping github.com请求超时,且在确认没有网络问题、没有使用代理、参考其他博主修改端口22/443无用(参考文章:修改端口)的情况下,可采用以下方法(我也是试了各种方法终于找到了适合自己的):
在 C:\Windows\System32\drivers\etc下的 hosts 文件中,在末尾添加以下文字:
192.30.255.112 github.com git
185.31.16.184 github.global.ssl.fastly.net
和修改config文件一样,如果同时生成了txt文件,记得删掉原来的hosts文件,并且去掉hosts.txt的.txt(这一步可能需要关掉电脑的防火墙和杀毒软件等)
安装Git及配置
github 多个账号问题
Windows下使用ssh-add报错
多个 github 账号、github 和 gitee 不同账号如何配置 ssh key
修改端口
git push出现ssh_dispatch_run_fatal错误