2026年5月

Git 使用 SSH 连接 GitHub 完整教程

一、SSH 方式简介
SSH 是 GitHub 推荐的安全连接方式,相比 HTTPS:

  • 不需要每次输入账号密码

  • 更稳定,不容易出现 connection reset

  • 适合长期开发使用


二、检查是否已有 SSH Key

在 CMD 或 Git Bash 执行:

dir %USERPROFILE%.ssh

如果看到以下文件之一,说明已有 SSH Key:

  • id_ed25519

  • id_ed25519.pub

  • id_rsa

  • id_rsa.pub


三、生成 SSH Key(没有才需要)

执行:

ssh-keygen -t ed25519 -C "你的GitHub邮箱"

一路回车即可(不要设置密码也可以)

默认生成位置:
C:\Users\你的用户名.ssh\


四、启动 SSH Agent

执行:

ssh-agent

如果 Windows 环境需要手动启动服务(管理员 PowerShell):

Set-Service -Name ssh-agent -StartupType Automatic
Start-Service ssh-agent


五、添加 SSH Key 到代理

执行(以 ed25519 为例):

ssh-add %USERPROFILE%.ssh\id_ed25519

成功会提示:
Identity added


六、复制公钥

执行:

type %USERPROFILE%.ssh\id_ed25519.pub

复制输出的整段内容(ssh-ed25519 开头)


七、添加到 GitHub

打开 GitHub SSH Key 页面:
https://github.com/settings/keys

点击:New SSH key

填写:
Title:随便写(如 My PC)
Key:粘贴公钥内容

点击保存


八、测试 SSH 是否成功

执行:

ssh -T git@github.com

第一次会提示:
Are you sure you want to continue connecting? (yes/no)
输入:yes

成功后显示:
Hi 用户名! You've successfully authenticated


九、修改 Git 远程仓库为 SSH

进入项目目录:

cd 项目路径

执行:

git remote set-url origin git@github.com:用户名/仓库名.git


十、确认远程地址

git remote -v

正确结果示例:
origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)


十一、推送代码

git push

或首次推送:

git push -u origin main


十二、常见问题说明

  1. 如果 ssh 连接失败:
    检查是否执行 ssh -T git@github.com 测试成功

  2. 如果提示 Permission denied:
    说明 SSH Key 没加到 GitHub 或 ssh-agent 未加载

  3. 如果 push 失败:
    确认 remote 是否已从 https 改为 git@github.com


结束
SSH 配置成功后,后续 push/pull 都无需再配置

.NET4.7.2 WPF桌面软件 免费无报毒高难度反编译防护全套方案


一、核心总原则

全程使用:

  • 免费工具

  • 原生代码防护

  • 无底层危险行为

彻底避免:

  • 反虚拟机

  • 内存拦截

  • 驱动级调试

  • 外层加壳

实现:

  • 零报毒

  • 高反编译难度

  • 免费商用级保护

适配:

  • Windows Defender

  • 360

  • 火绒

  • 主流安全软件


二、VS 编译优化(必须)

1、打开项目配置

进入:

项目属性 → 生成

2、关闭调试信息

取消:

定义 DEBUG 常量定义 TRACE 常量

3、开启优化

勾选:

优化代码

作用:

  • 删除冗余逻辑

  • 提高反编译难度

  • 降低可读性


4、关闭 PDB 调试信息

调试信息选择:

效果:

删除 PDB无法变量追踪无法源码定位

5、固定 CPU 架构

推荐:

x64

或:

x86

禁止:

Any CPU

作用:

  • 降低误报

  • 减少程序集特征


6、关闭 XML 注释

取消:

生成 XML 注释文件

7、高级设置

关闭:

JIT 调试托管调试代码跟踪

三、ConfuserEx 混淆配置(核心)

1、下载工具

GitHub:

https://github.com/yck1509/ConfuserEx

2、导入程序集

导入:

主程序 EXE所有 DLL

统一混淆。


3、必须开启

以下功能安全且不报毒:

名称混淆控制流混淆字符串加密常量混淆资源混淆引用隐藏死代码删除

4、必须关闭

以下功能容易误报:

AntiVMAntiDebug硬件断点检测内存保护进程 HookPE 压缩UPXNtAPI 劫持运行时自修复

5、混淆后效果

使用:

dnSpyILSpydotPeek

查看时:

变量乱码代码逻辑错乱字符串不可见方法名全部混淆

四、WPF 专属加固

1、禁止松散 XAML

WPF 默认:

XAML → 编译成 BAML

发布后:

无法直接读取界面源码

2、核心逻辑不要写 XAML

禁止:

<Button Visibility="{Binding IsVip}" />

核心逻辑放:

后台 C#

3、授权逻辑拆散

不要集中在:

一个类一个窗口一个方法

建议分散:

程序启动页面加载按钮点击功能调用

五、原生无毒防护代码

1、轻量反调试

using System.Diagnostics;public static bool IsBeingDebugged(){    return Debugger.IsAttached;}if (IsBeingDebugged()){    Environment.Exit(0);}

特点:

纯 .NET API无危险行为不会报毒

2、完整性校验

程序启动时:

校验 EXE Hash

如果:

被 dnSpy 修改被补丁篡改

则:

直接退出

3、敏感字符串拆分

错误写法:

string key = "123456789";

推荐写法:

char[] k1 = { '1', '2', '3' };char[] k2 = { '7', '8', '9' };string realKey = new string(k1) + "456" + new string(k2);

作用:

避免字符串搜索破解

六、标准化发布配置

1、填写程序集信息

进入:

项目属性 → 程序集信息

填写:

公司名称产品名称版本号版权

2、禁止外层加壳

不要使用:

UPXAspack免费压缩壳

原因:

误报率极高

3、推荐发布模式

选择:

依赖框架部署

优点:

体积小误报低特征干净

4、更换正规图标

不要:

默认空白图标

建议:

正规 ICO 图标

七、整体防护效果

小白破解者

基本直接放弃

普通逆向人员

需要数小时分析

专业逆向人员

仍可能破解。

但:

成本高维护难收益低

八、核心避坑总结

免费方案最佳组合

VS 编译优化+ConfuserEx+轻量原生校验

零报毒核心逻辑

只做:

静态代码混淆

不要做:

内存拦截驱动行为底层 Hook

严禁使用

VMProtect 试用版Themida各种小众免费壳

原因:

误报严重

九、与 Python 对比

.NET WPF:

免费方案防护强度远高于 Python

Python:

几乎无法真正防反编译

Git + GitHub 私人仓库完整使用指南

适用于 Windows 环境,配合 Visual Studio 2022 和 Visual Studio Code 使用。


一、安装 Git

1. 下载

前往官网下载安装包:

https://git-scm.com/download/win

选择:

64-bit Git for Windows Setup


2. 安装要点

安装过程中保持默认选项,注意以下两步:

  • Adjusting your PATH environment
    选择:
    Git from the command line and also from 3rd-party software

  • Choosing the default editor
    可以选择:
    Use Visual Studio Code as Git's default editor


3. 验证安装

安装完成后,关闭并重新打开终端(PowerShell / CMD / VS Code Terminal),执行:

git --version

看到类似:

git version 2.47.0.windows.1

即表示安装成功。


二、首次配置(只需执行一次)

# 设置用户名(填你的 GitHub 用户名)git config --global user.name "你的GitHub用户名"# 设置邮箱(填你的 GitHub 注册邮箱)git config --global user.email "你的GitHub邮箱"# 可选:设置默认分支名为 main(GitHub 默认)git config --global init.defaultBranch main# 可选:解决中文文件名显示乱码git config --global core.quotepath false

验证配置:

git config --global --list

三、在 GitHub 创建私人仓库

  1. 登录:https://github.com

  2. 点击右上角 + → New repository

  3. 填写信息:

  • Repository name:
    my-project

  • Description:
    可选填写项目描述

  • Visibility:
    选择 Private

  • 不要勾选:

    • Add a README file

    • .gitignore

    • Choose a license

  1. 点击 Create repository

  2. 复制仓库 HTTPS 地址,例如:

https://github.com/你的用户名/my-project.git

四、本地项目首次推送到 GitHub

在项目根目录打开终端,依次执行:

# 1. 初始化 Git 仓库git init# 2. 添加所有文件(.gitignore 中的文件会自动排除)git add .# 3. 检查即将提交的文件列表git status# 4. 首次提交git commit -m "初始提交"# 5. 关联远程仓库git remote add origin https://github.com/你的用户名/my-project.git# 6. 推送到 GitHubgit push -u origin main

首次推送时会弹出 GitHub 登录授权窗口,授权后后续一般无需重复登录。


五、日常开发工作流

命令行方式

# 查看当前改动git status# 查看具体改动内容git diff# 添加所有改动git add .# 或添加指定文件git add 路径/文件名# 提交git commit -m "修复了xxx问题"# 推送git push

拉取远程更新

如果另一台电脑也修改了代码:

git pull

六、在 VS Code 中使用 Git

VS Code 已内置 Git 支持。

基本操作

操作 方法
打开 Git 面板 左侧「源代码管理」或 Ctrl+Shift+G
暂存文件 文件旁点击 +
暂存全部 「更改」标题旁点击 +
提交 输入提交信息 → 点击 ✓
推送 底部状态栏同步图标
拉取 命令面板执行 Git: Pull
查看改动 点击文件进入 Diff 视图

推荐扩展

推荐安装:

  • Git Graph
    可视化查看分支和提交历史

  • GitLens
    查看作者、历史、行级追踪


七、在 Visual Studio 2022 中使用 Git

Visual Studio 2022 同样内置完整 Git 支持。


打开项目

方式一:

文件 → 打开 → 文件夹

方式二:

直接打开:

backend/ActivationApi/ActivationApi.sln

基本操作

操作 方法
Git Changes 窗口 Git → 提交或暂存
暂存文件 右键 → 暂存
暂存全部 点击“全部暂存”
提交 输入提交信息 → “全部提交”
推送 顶部 ↑ 按钮
拉取 Git → 拉取
查看历史 Git → 查看分支历史记录
切换分支 右下角分支名

注意事项

  • VS 2022 打开 .sln 后,Git 操作针对整个仓库

  • 前后端共用同一个 .git 仓库


八、两个 IDE 的协作方式

前端开发 → VS Code 打开 my-project 根目录后端开发 → VS 2022 打开 backend/ActivationApi/ActivationApi.slnGit 提交 → 任意 IDE 都可操作

建议:

  • VS Code 负责 Git 操作

  • VS 2022 专注后端开发与调试


九、常用 Git 命令速查表

基础命令

git statusgit add .git commit -m "提交信息"git pushgit pullgit log --oneline -10

撤销与回退

git checkout -- 文件名git reset HEAD 文件名git reset --soft HEAD~1git reset --hard HEAD~1

分支操作

git branchgit branch 分支名git checkout 分支名git checkout -b 分支名git merge 分支名git branch -d 分支名

远程操作

git remote -vgit remote set-url origin 新地址git push -u origin 分支名

查看信息

git diffgit diff --stagedgit log --oneline --graphgit blame 文件名

十、在新电脑上克隆项目

# 1. 克隆仓库git clone https://github.com/你的用户名/my-project.git# 2. 进入项目目录cd my-project# 3. 创建 .env 文件copy .env.example .env# 4. 安装前端依赖cd frontend/soybean-admin-mainpnpm install# 5. 恢复后端依赖cd ../../backend/ActivationApidotnet restore

十一、安全提醒

文件 是否入库 说明
.env 包含数据库密码等敏感信息
.env.example 配置模板
appsettings.Development.json 本地开发配置
node_modules/ 可重新安装
bin/ obj/ 编译产物
backend/publish/ 发布文件

敏感文件误上传处理

# 从 Git 追踪中移除git rm --cached .env# 提交git commit -m "移除敏感文件"# 推送git push

注意:

即使删除,Git 历史中仍可能存在旧内容,建议立即更换所有泄露的密码和密钥。


十二、常见问题

Q:推送时提示 rejected - non-fast-forward

git pull --rebasegit push

Q:拉取时出现合并冲突

冲突示例:

<<<<<<< HEAD你的改动=======远程改动>>>>>>> origin/main

处理步骤:

git add .git commit -m "解决合并冲突"git push

Q:忽略已被追踪的文件

git rm --cached 文件路径git commit -m "停止追踪文件"

Q:查看文件历史

git log --oneline 文件路径git show 提交哈希:文件路径

Q:VS Code 不显示 Git 信息

确认当前打开的是包含 .git 文件夹的根目录。