Github多个账号设置SSH 逐个问题击破 新手友好(Windows) (史上最全)
文章目录
- Github多个账号设置SSH 逐个问题击破 新手友好(Windows) (史上最全)
- 环境
- 生成SSH key
- 将新密钥添加到SSH agent中
- 修改config文件
- GitHub添加SSH Key
- 测试
- 参考文章
Github多个账号设置SSH 逐个问题击破 新手友好(Windows) (史上最全)
在看了几十篇博文,经历了一天一夜的挣扎后,基本把能踩的坑都踩了个遍,终于能够用SSH进行Github多个账号的无缝切换,记录于此。话不多说,先来分享一波成功的喜悦:
如果你在Github多个账号设置SSH的过程中遇到了以下问题:
- No such file or directory
- Could not open a connection to your authentication agent
- Connection closed by remote host
- the agent has no identities
- ine 1: Bad configuration option: \377\376h
- terminating, 1 bad configuration options
- 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请求超时,本文会有一定借鉴意义。
环境
先说一下我的环境是:Windows11,在此基础下进行Github多个账号设置SSH
生成SSH key
首先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 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中
修改config文件
在~/.ssh目录下找到config文件,如果没有就创建:
echo love >>config
再次进入该目录,即可看见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添加SSH Key
打开Github官网,点击右上角用户头像,选择settings
新建一个SSH Key,将 C:\Users\用户名.ssh\id_rsa.pub(可以用记事本打开)的公钥内容复制进去,并且取一个名字(建议为登录设备的名字)。然后Sign out,登录另一个账号,重复步骤,将 C:\Users\用户名.ssh\id_rsa_person.pub的公钥内容复制进去
测试
ssh -T git@github.com \\出现Are you sure you want to continue connecting (yes/no/[fingerprint])? 输入y即可
ssh -T git@me.github.com \\出现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错误
Github多个账号设置SSH 逐个问题击破 新手友好(Windows) (史上最全)相关推荐
- Github教程】史上最全github使用方法:github入门到精通
[Github教程]史上最全github使用方法:github入门到精通 [初识Github] 首先让我们大家一起喊一句"Hello Github".YEAH!就是这样. Git是 ...
- 2016年GitHub上史上最全的Android开源项目分类汇总
以下内容为转载 版主原网址 http://itindex.net/detail/51896-github-android-开源 GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时 ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- GitHub 标星 44k!史上最全技术面试手册!
大家好,我是为前端娱乐圈操碎了心的小迷妹,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标. 每天上班必须做的一件事情,就是打开 ...
- 【Mood 16 】史上最全github使用方法:github入门到精通
[初识Github] 首先让我们大家一起喊一句"Hello Github".YEAH!就是这样. Git 是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作L ...
- 【Github教程】史上最全github用法:github入门到精通
原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github] 首先让我们大家一起喊一句"Hello Github". ...
- github史上最全教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- 【Github教程】史上最全github使用方法:github入门到精通(转自eoeandroid.com)
本文来源:http://www.eoeandroid.com/thread-274556-1-1.html 另附经典教程网址 :http://wuyuans.com/2012/05/github-si ...
- 【Github教程】史上最全github使用方法:github入门到精通
[初识Github] 首先让我们大家一起喊一句"Hello Github".YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Li ...
最新文章
- 数值计算动态语言Julia 1.0发布
- gRPC编码初探(java)
- [置顶] 混响音效
- java向有序数组里插数_Java向有序数组中插入一个元素,,使其仍按有序排列,并求出这个插入元素的下标...
- 洛谷P2050 美食节
- 为什么要学习Linux操作系统?
- Gnuplot的简介与常用操作
- mysql 备份还原策略_Mysql备份恢复
- wwwscan目录扫描器的逆向分析
- GMap.NET控件使用
- stm32采集脉冲信号_stm32用ETR采集外部脉冲个数出现二分频问题,请教哪里设置......
- 力扣 373. 查找和最小的K对数字
- C C++基础的Java教程
- Vite 4.0 正式发布!
- 计算机管理系统验收报告,管理信息系统验收报告
- 电快速瞬变脉冲群实验(内部电源设备)
- thinkph5 新增命令/添加命令command
- 2013华为校园招聘面经
- POI 给单元格添加批注
- html制作状态栏数字时钟,超级实用的html5制作15种数字时钟样式代码