根据安装GitHub的扩展
1.使用winget install Github.cli命令安装之后报错,无法使用gh命令?

原因:这个界面是Windows PowerShell里安装和使用GitHub CLI的过程,出现了命令找不到的问题,具体解释如下:
1.前面的操作:成功安装了GitHub CLI,你用winget install GitHub cli命令,成功下载并安装了GitHub CLI(版本2.83.1),安装包大小17.6MB。
2. 后面的问题:gh命令无法识别,执行gh auth login时,PowerShell提示“无法将‘gh’识别为命令”,原因是:GitHub CLI的安装路径没有被添加到系统的“环境变量(PATH)”中,所以系统找不到gh这个程序。
解决方法:
方法1:关闭当前窗口,重新打开一个新的PowerShell窗口(系统会重新加载环境变量),再执行gh auth login即可,然后打开新的窗口重新输入gh命令。
方法2:在GitHub官网下载GitHub,GitHub官网下载链接,然后勾选Add path,把路径添加到环境变量里,然后就可以继续执行命令
2.failed to authenticate via web browser: Post "https://github.com/login/device/code": read tcp 192.168.43.58:9469->20.205.243.166:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
意思是:尝试通过浏览器登录 GitHub CLI 时,你的设备(IP 192.168.43.58)和 GitHub 服务器(IP 20.205.243.166)之间的网络连接超时 / 失败了,所以登录流程没走到 “输入验证码” 那一步就卡住了。

原因:你的网络连不上 GitHub 的认证服务器,导致网页登录失败了(可能是网络延迟、墙的限制,或者 GitHub 服务器暂时无法访问)。
解决方法:
用 “令牌(Token)” 替代网页登录,用GitHub令牌(Personal Access Token,PAT)替代网页登录GitHub CLI的步骤很简单,按以下操作来:
步骤1:先在GitHub网页端生成令牌
1 打开GitHub官网(https://github.com),登录你的账号。
2. 点击右上角头像 → 选择 Settings(设置)。
3. 左侧菜单拉到最下面,选 Developer settings(开发者设置)。
4. 左侧选 Personal access tokens(个人访问令牌) → Tokens (classic)(经典令牌)。
5. 点击 Generate new token(生成新令牌) → 选 Generate new token (classic)。
6. 填写信息:
Note(备注):写个标识(比如“GitHub CLI登录”)。
Expiration(有效期):选合适的时长(比如“30 days”或“No expiration”)。
Scopes(权限):至少勾选 repo(仓库权限)、read:user(用户信息)、gist(如果需要)。
8. 拉到最下面,点击 Generate token(生成令牌)。
9. 复制生成的令牌(注意:这是唯一一次看到令牌的机会,一定要存好)
步骤2:在PowerShell里用令牌登录GitHub CLI
10. 打开PowerShell,输入命令:
gh auth login
11.按提示选择:
Where do you use GitHub?→ 选GitHub.com。Preferred protocol?→ 选HTTPS。Authenticate Git with your GitHub credentials?→ 选Yes。How would you like to authenticate?→ 选Paste an authentication token(粘贴认证令牌)。
12.此时会提示“Paste your authentication token:”,把刚才复制的令牌粘贴进去(粘贴后不会显示内容,直接按回车即可)。
如果成功,PowerShell会提示“Login succeeded”,这样就用令牌完成登录了。
3.unable to find git executable in PATH; please install Git for Windows before retrying
在PATH中找不到git可执行文件;请先安装Git for Windows再重试

解决方法:
1.没有配置git环境,自行配置git环境

2.先安装 Git(去Git 官网下载 Windows 版:https://git-scm.com/install/windows,安装时选 “Add Git to PATH”),然后再用令牌(Token)方式登录 GitHub CLI(避开网页登录的网络问题)。
Git 安装 + Token登录
如何安装gthub:
1.默认(也可以勾选Additional icons on the desktop,添加图标到桌面)

2.默认

3.默认vim,也可以安装完之后改

Git的默认编辑器在安装完成后,随时能通过命令修改,步骤很简单:
打开Git Bash(或PowerShell),输入对应的命令即可:
改成Notepad++:
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
改成VS Code:
git config --global core.editor "code --wait"
改回系统记事本:
git config --global core.editor notepad
区分 --和#
| 类型 | 示例 | 作用 |
|---|---|---|
--(参数标识) |
git config --global |
告诉Git:这是“全局配置”参数 |
| 注释 | # 这是修改Git编辑器的配置 |
只给人看,Git会直接忽略这行 |
简单记:
--是「命令的语法规则」,少了它Git就不认识参数(比如git config global会报错),不能缺少--参数。- 注释是「给开发者的备注」,有没有都不影响命令执行。
不加--(或对应的短参数),Git会根据具体命令场景出现报错
4.默认分支

5.默认(recommend推荐)
它的作用是把 Git 添加到系统 PATH 里,这样你在 PowerShell、命令提示符里都能直接用git命令,也能被 GitHub CLI 这类第三方工具识别到

6.默认use bundled OpenSSH(自带的cmd.exe 或者 Power shell)
也可以选择external OpenSSH(自己下载的OpenSSH)
SSH是一种安全的网络传输协议,Git里用它来加密连接GitHub/GitLab等仓库,实现代码的安全拉取/推送(替代HTTP协议)。
界面选项的意思:
Use bundled OpenSSH(当前选中):用Git自带的SSH客户端(不用额外安装,直接能用,推荐新手选这个)
Use external OpenSSH:用你电脑里已安装的其他SSH客户端(需要自己提前装,新手不用选)

Git里连接远程仓库(比如GitHub)的SSH和HTTPS两种方式,核心区别在“认证方式”和“使用体验”,看这张对比表更清楚:
| 维度 | SSH方式 (Use bundled OpenSSH) | HTTPS方式(Use external OpenSSH) |
|---|---|---|
| 认证方式 | 用「SSH密钥对」(本地生成密钥,把公钥传到GitHub) | 每次操作输入「GitHub账号密码」或「令牌(Token)」 |
| 首次配置 | 略复杂(需要生成/上传密钥) | 简单(直接输入账号密码/令牌) |
| 后续使用 | 配置好后不用重复输入密码,一劳永逸 | 每次操作可能需要重复验证(或配置凭证缓存) |
| 安全性 | 密钥存在本地,更安全(无密码泄露风险) | 需妥善保管密码/令牌,有泄露风险 |
| 适用场景 | 长期频繁操作仓库(比如开发者日常开发) | 临时/偶尔操作仓库(比如快速拉取代码) |
| 工具 | OpenSSH | powrshell/cmd/xshell |
简单说:长期用选SSH(一次配置终身省心),临时用选HTTPS(上手快)。
我把「公钥/私钥」和「本地SSH(Git自带)/外部SSH」的区别分两个表格整理,更清晰:
表格1:公钥 vs 私钥(SSH密钥对的两个部分)
| 维度 | 公钥 | 私钥 |
|---|---|---|
| 存储位置 | 上传到远程仓库(如GitHub的账号设置里) | 仅保存在自己的电脑本地 |
| 作用 | 远程仓库用它加密数据,只有对应的私钥能解密 | 本地用它解密远程仓库的加密数据,证明“你是你” |
| 可见性 | 可以公开分享(泄露了也不影响安全) | 绝对不能泄露(泄露会导致仓库被他人非法访问) |
| 生成方式 | 和私钥是成对生成的(生成私钥时自动生成公钥) | 通过ssh-keygen命令生成(Git自带/外部SSH都能用这个命令) |
表格2:Git自带SSH(本地SSH) vs 外部SSH
| 维度 | Git自带SSH(bundled OpenSSH) | 外部SSH(如单独安装的OpenSSH) |
|---|---|---|
| 来源 | 随Git安装包一起自带 | 单独从OpenSSH官网/系统商店下载安装 |
| 密钥存储路径 | 默认存在C:\用户\你的用户名\.ssh文件夹下 |
可自定义路径,也可沿用系统默认路径 |
| 生成密钥的命令 | 用git bash里的ssh-keygen命令 |
用外部SSH终端里的ssh-keygen命令 |
| 和Git的兼容性 | 和Git高度适配,无需额外配置 | 需确保路径被加入系统环境变量,Git才能识别 |
| 适用场景 | 新手/不想额外折腾的用户 | 有特殊SSH功能需求的进阶用户 |
简单总结:
- 公钥+私钥是SSH认证的“钥匙对”,不管用Git自带还是外部SSH,都需要生成这对密钥;
- Git自带SSH是“省心版”,外部SSH是“自定义版”,但对普通用户来说,用Git自带的SSH完全够用~

区分一下三个SSH,别混淆,我自己的理解就是他们肯定有点关联,可能是和SSH协议关联,还得看看
| 对比维度 | SSH(协议) Secure Shell |
SSH(Java框架) Struts + Spring + Hibernate |
SSH(小飞机) SS/SSR 等代理工具的俗称 |
|---|---|---|---|
| 核心定义 | 一种安全的网络传输协议,用于加密远程登录、数据传输(如Git/服务器管理) | 三个Java开源框架的组合,是早期Java Web开发的经典技术栈 | 代理工具 |
| 所属领域 | 网络安全/通信协议 | Java Web开发/企业级应用开发 | 代理工具 |
| 核心用途 | 1. 加密远程连接服务器(如Linux服务器登录); 2. Git通过SSH协议连接远程仓库; 3. 安全传输文件(scp/sftp) |
1. Struts:处理前端请求、控制层; 2. Spring:核心容器、依赖注入、事务管理; 3. Hibernate:ORM框架,简化数据库操作 |
代理工具 |
| 发明者/起源 | 1995年由Tatu Ylönen开发,替代不安全的Telnet协议 | 2000年后逐步形成的Java开发组合(Struts:Apache;Spring:Rod Johnson;Hibernate:Gavin King) | 代理工具 |
| 使用场景举例 | - 用ssh root@服务器IP登录阿里云服务器;- Git通过SSH协议推送代码到GitHub |
- 开发电商网站、企业管理系统; - 传统Java后端项目快速搭建 |
(违规场景)访问境外未备案网站、规避网络监管(不合法) |
| 是否开源/标准化 | 标准化协议(RFC 4250-4256),开源实现(OpenSSH) | 三个框架均为开源,有成熟的官方文档和社区 | 非标准化工具,多为民间修改版,无官方维护 |
| 和“密钥/加密”的关系 | 核心依赖非对称加密(公钥/私钥),是加密通信的核心 | 无直接加密功能,仅为开发框架,加密需额外实现 | 基于加密算法(如AES、ChaCha20)实现代理数据传输加密 |
| 新手易混淆点 | 我们之前聊的Git/SSH认证,指的是这个协议 | 仅Java开发场景会接触,和网络协议无关 | 纯民间俗称,和真正的SSH协议无技术关联 |
SSH协议只是其中一个,网络分为五层
互联网中的协议数量没有绝对固定值——因为协议是分层设计(如OSI/RM 7层、TCP/IP 4层),不同层级、不同场景(通信、存储、安全等)都有对应的标准协议,且随着技术发展会持续新增/淘汰。
以下从「分层分类」角度,整理核心常用协议清单(覆盖你之前关注的协议,按TCP/IP分层逻辑归类),帮你建立系统认知:
一、TCP/IP分层核心协议总览(常用协议约50+,以下为关键分类)
| 分层 | 核心作用 | 常用协议清单(含你关注的协议) |
|---|---|---|
| 应用层 | 直接面向用户/应用,定义数据用途 | 1. 通信类:HTTP、HTTPS、SSH、FTP、SFTP、SMTP(邮件发送)、POP3/IMAP(邮件接收)、DNS(域名解析); 2. 数据交互类:REST API(基于HTTP)、WebSocket(实时通信)、MQTT(物联网); 3. 文件传输类:FTPS(FTP加密版)、SCP(SSH文件传输)、TFTP(简单文件传输); 4. 其他:Telnet(明文远程登录,已淘汰)、SNMP(设备管理)、NTP(时间同步) |
| 传输层 | 保障端到端数据传输可靠性/效率 | 1. 可靠传输:TCP(你关注的协议,HTTP/HTTPS/SSH/FTP均基于此); 2. 高效传输:UDP(视频通话、直播、DNS查询); 3. 其他:SCTP(融合TCP/UDP优势,用于电信网络) |
| 网络层(网际层) | 负责跨网络路由、地址寻址 | 1. 核心协议:IP(IPv4/IPv6,互联网基础); 2. 辅助协议:ICMP(网络诊断,如ping命令)、ARP(局域网地址解析)、RARP(反向地址解析)、IGMP(组播管理) |
| 数据链路层 | 负责物理链路数据传输(帧封装) | 1. 局域网:Ethernet(以太网协议)、WiFi(802.11系列协议); 2. 广域网:PPP(拨号上网)、HDLC(路由器通信); 3. 其他:VLAN(虚拟局域网)、STP(防环路) |
| 物理层 | 定义物理设备接口(电信号/硬件) | 1. 有线:RJ45(网线接口)、光纤传输协议; 2. 无线:蓝牙(802.15)、NFC、5G/4G(蜂窝网络协议); 3. 其他:RS-232(串口协议) |
二、关键补充说明
- 协议数量的“无限性”:
- 标准协议:仅IETF(互联网工程任务组)发布的RFC文档中,已标准化的协议就有上千个(大部分用于特定场景,如物联网、工业控制);
- 自定义协议:企业/开发者可基于底层协议(如TCP/UDP)设计私有协议(如游戏通信协议、工业设备协议),这类协议无统一统计;
- 核心协议vs边缘协议:
- 你之前关注的TCP、HTTP、HTTPS、SSH、FTP属于「核心常用协议」(互联网基础);
- 边缘协议:如用于卫星通信的DVB-S2、工业控制的Modbus、物联网的CoAP等,仅在特定领域使用;
- 协议的“替代与演进”:
- 淘汰协议:Telnet(被SSH替代)、HTTP/1.0(被HTTP/1.1/2/3替代)、早期FTP(被SFTP/FTPS替代);
- 新增协议:HTTP/3(基于UDP,优化传输效率)、QUIC(谷歌推出,用于Chrome浏览器)、IPv6(替代IPv4解决地址枯竭)。
三、新手重点掌握清单(无需记所有协议)
| 分层 | 必学协议(工作/学习高频) | 核心用途 |
|---|---|---|
| 应用层 | HTTP、HTTPS、SSH、FTP、DNS | 网页访问、安全通信、远程登录、文件传输、域名解析 |
| 传输层 | TCP、UDP | 可靠传输(文件/网页)、高效传输(视频/直播) |
| 网络层 | IP、ICMP | 跨网络通信、网络诊断(ping) |
| 数据链路层 | Ethernet、WiFi | 局域网/无线局域网连接 |
简单说:协议是“互联网的语言”,不同设备/场景需要不同的“语言”沟通,核心常用协议仅10+个,掌握这些就能应对大部分开发/运维场景。如果需要深入了解某类协议(如物联网协议、安全协议),可以进一步细化。
posted on 2025-12-06 02:27 Skeleton_s 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号