2026/1/12 0:11:17
网站建设
项目流程
新手学网站建设解疑与技巧1200例,建立网站赚钱吗,变更网站备案信息,如何分析网站的设计在之前的 Git 仓库操作中#xff0c;我先后遇到了「403 权限拒绝」「SSH 22 端口超时」「认证主机提示」等问题#xff0c;最终通过 SSH 配置解决了所有推送障碍。本文将聚焦 SSH 相关技术点#xff0c;复盘 “为什么要配置 SSH”“如何一步步配置”“遇到问题怎么解决”我先后遇到了「403 权限拒绝」「SSH 22 端口超时」「认证主机提示」等问题最终通过 SSH 配置解决了所有推送障碍。本文将聚焦 SSH 相关技术点复盘 “为什么要配置 SSH”“如何一步步配置”“遇到问题怎么解决”形成可直接复用的操作手册方便后续遇到同类问题时快速参考。一、核心疑问为什么一定要配置 SSH在尝试用 HTTPS 方式推送代码时反复出现remote: Permission to myAccount/MSE_for_TAD-hb.git denied to myAccount403 权限错误即使输入正确账号也无法解决。而 SSH 配置能从根本上解决这些问题核心原因有 3 点1. 避开 HTTPS 凭证的 “坑”GitHub 早在 2021 年就弃用了 “账号 密码” 的 HTTPS 登录方式必须用「个人访问令牌PAT」替代但我在操作中多次因 “凭证缓存过期”“PAT 权限不全” 报错SSH 通过「密钥对」认证本地私钥 GitHub 公钥无需每次输入账号密码也不存在 “凭证过期” 问题一次配置终身免密。2. 解决国内网络 “22 端口拦截” 问题我执行git push时多次遇到ssh: connect to host github.com port 22: Connection timed out这是国内网络常见问题 —— 多数网络环境会拦截 SSH 默认的 22 端口而配置 SSH 时可指定走 443 端口HTTPS 默认端口几乎不被拦截直接绕开网络限制。3. 更安全的身份认证HTTPS 凭证PAT若不慎泄露攻击者可直接操作我的仓库SSH 采用 “非对称加密”本地私钥仅保存在我的电脑GitHub 仅存储公钥即使公钥泄露没有私钥也无法认证安全性更高。二、SSH 配置全流程复盘我的操作轨迹每步对应问题我的 SSH 配置过程曾因「.ssh 目录不存在」「端口未指定」「公钥未添加」等卡壳以下是修正后的完整流程每步都标注了 “对话场景呼应”帮我回忆当时的操作细节步骤 1创建.ssh 目录解决 “cd ~/.ssh: No such file or directory”我最初执行cd ~/.ssh时报错 “目录不存在”需先创建目录默认路径C:\Users\我的用户名\.ssh进入gitbash界面依次执行以下命令\# 1. 进入用户根目录Windows下\~对应C:\Users\我的用户名 cd \~ \# 2. 创建.ssh目录若已存在则忽略 mkdir .ssh \# 3. 进入.ssh目录后续操作都在此目录下 cd .ssh \# 验证执行pwd输出应类似 /c/Users/HB/.sshHB是我的用户名 pwd步骤 2生成 SSH 密钥对核心用于 GitHub 认证我需要生成「ed25519 类型」密钥比传统 RSA 更安全、密钥更小命令中邮箱需用我 GitHub 注册的邮箱\# 生成ed25519密钥-C后接邮箱备注作用方便区分设备 ssh-keygen -t ed25519 -C 注册github使用的邮箱xxx.com执行后会出现 3 次提示全程按回车键无需设置密码简化后续操作提示 1Enter file in which to save the key (/c/Users//.ssh/id_ed25519):→ 回车默认路径提示 2Enter passphrase (empty for no passphrase):→ 回车无密码提示 3Enter same passphrase again:→ 回车确认无密码。生成结果验证执行后在.ssh目录下会生成两个文件id_ed25519本地私钥绝对不能泄露不要上传到仓库id_ed25519.pub公钥需要上传到 GitHub用于身份匹配。步骤 3配置 SSH 走 443 端口解决 “22 端口超时”这是解决我「SSH 连接超时」的关键步骤 —— 通过配置文件强制 SSH 连接 GitHub 时走 443 端口避开 22 端口拦截\# 在.ssh目录下创建config文件无后缀写入端口配置 echo -e Host github.com\n Hostname ssh.github.com\n Port 443\n User git\n IdentityFile \~/.ssh/id\_ed25519 config \# 验证配置内容确保无拼写错误 cat config配置参数解读对应我的场景Host github.com对 “github.com” 这个域名生效Hostname ssh.github.comGitHub 的 SSH 专用域名固定值Port 443指定连接端口为 443解决 22 端口超时User gitSSH 连接 GitHub 的固定用户名必须是 git不能改IdentityFile ~/.ssh/id_ed25519指定使用刚才生成的私钥路径要正确。步骤 4将公钥添加到 GitHub解决 “权限认证失败”SSH 认证的核心是 “GitHub 存储的公钥” 与 “我本地的私钥” 匹配因此需要将id_ed25519.pub中的内容添加到 GitHub步骤 4.1复制公钥内容\# 读取公钥文件内容并复制Windows下可直接全选输出结果CtrlC复制 cat id\_ed25519.pub输出示例需全选复制以ssh-ed25519开头的整行ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxx我的公钥内容xxxxxxxxxxxxxx HBBEN-WIN步骤 4.2在 GitHub 中添加公钥登录我的 GitHub 账号myAccount点击右上角头像 → 选择「Settings」在左侧菜单找到「SSH and GPG keys」→ 点击「New SSH key」填写两个核心字段「Title」填备注如 “BEN-WIN 电脑”方便区分多台设备「Key」粘贴刚才复制的公钥内容确保无多余空格 / 换行点击「Add SSH key」完成添加若弹出账号验证输入 GitHub 密码即可。步骤 5测试 SSH 连接验证配置是否成功这是 “临门一脚”需确认 SSH 能正常连通 GitHub对应我之前遇到的「The authenticity of host」提示\# 测试SSH连接GitHub-T表示“不打开终端仅测试认证” ssh -T gitgithub.com场景 1首次连接出现主机认证提示我首次执行时会看到以下提示这是 SSH 的安全验证确认连接的是真实 GitHub 服务器The authenticity of host \[ssh.github.com]:443 (\[20.205.243.160]:443) cant be established. ED25519 key fingerprint is SHA256:DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/\[fingerprint])?操作输入小写yes必须小写不能输 Y/YES回车原理GitHub 官方公开的 ED25519 指纹就是SHA256:DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU确认匹配即可安全连接。场景 2连接成功核心验证结果若输出以下内容说明 SSH 配置完全成功我的身份已通过 GitHub 认证Warning: Permanently added \[ssh.github.com]:443,\[20.205.243.160]:443 (ED25519) to the list of known hosts. Hi myAccount! Youve successfully authenticated, but GitHub does not provide shell access.关键信息Hi myAccount! Youve successfully authenticated认证成功。三、SSH 配置后的后续操作复盘我的推送流程SSH 配置成功后还需关联仓库并解决「分支落后」问题才能顺利推送代码对应我最后遇到的non-fast-forward报错步骤 1关联 GitHub 仓库替换 HTTPS 地址为 SSH我之前的远程地址是 HTTPS 格式需替换为 SSH 地址避免混用导致报错\# 1. 进入我的项目目录替换为实际路径 cd /d/Code/DeepLearning/TAL/MSE\_for\_TAD/MSE\_for\_TAD-hb \# 2. 查看当前远程地址确认是HTTPS格式 git remote -v \# 3. 删除旧的HTTPS远程地址默认远程名为origin git remote rm origin \# 4. 添加新的SSH远程地址替换为我的仓库SSH地址 \# 仓库SSH地址获取GitHub仓库页面 → Code → SSH → 复制 git remote add origin gitgithub.com:myAccount/MSE\_for\_TAD-hb.git \# 5. 验证远程地址输出应为SSH格式 git remote -v步骤 2拉取远程分支解决 “non-fast-forward” 分支落后我推送时曾报错Updates were rejected because the tip of your current branch is behind原因是 “本地分支落后于远程如远程有 README 文件本地没有”需先拉取对齐\# 拉取远程master分支--allow-unrelated-histories解决“历史无关”问题 \# -X theirs自动用远程内容覆盖本地冲突如README文件 git pull origin master --allow-unrelated-histories -X theirs步骤 3最终推送代码免密成功拉取对齐后执行推送命令此时已无需输入账号密码直接免密推送\# -u 绑定本地master分支与远程master分支仅首次推送需要 git push -u origin master推送成功的输出示例Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 32 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (6/6), 580 bytes | 580.00 KiB/s, done. Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:myAccount/MSE\_for\_TAD-hb.git #x20; a1b2c3d..d4e5f6g master - master Branch master set up to track remote branch master from origin.四、复盘关键遇到 SSH 问题的排查流程后续复用若后续再次遇到 SSH 相关报错可按以下流程排查覆盖我之前遇到的所有场景1. 先检查 SSH 连接是否正常\# 核心命令测试SSH连接 ssh -T gitgithub.com \# 若输出“Hi 用户名!” → 连接正常若超时/认证失败 → 进入下一步2. 检查.ssh 配置文件\# 查看config文件内容确认443端口配置正确 cat \~/.ssh/config \# 重点检查Hostname是否为ssh.github.com、Port是否为443、IdentityFile路径是否正确3. 检查公钥是否在 GitHub 中登录 GitHub → Settings → SSH and GPG keys → 确认已添加的公钥 “Title” 与我的设备匹配且公钥内容与~/.ssh/id_ed25519.pub一致。4. 检查远程地址是否为 SSH 格式git remote -v \# 输出应为 gitgithub.com:用户名/仓库名.git而非https://开头五、总结SSH 配置的核心要点复盘速记核心目的解决 HTTPS 的 403 权限错误、22 端口超时实现免密推送关键步骤创建目录→生成密钥→配置 443 端口→添加公钥→测试连接→关联仓库→拉取推送避坑重点目录路径~/.ssh对应 Windows 的C:\Users\用户名\.ssh端口配置必须指定Port 443避开 22 端口拦截认证提示首次连接需输入小写yes而非 Y/YES远程地址必须替换为 SSH 格式避免 HTTPS 与 SSH 混用。通过以上流程可在任何设备上复现 SSH 配置操作快速解决 GitGitHub 的推送问题无需再反复排查权限或网络错误。注文档部分内容可能由 AI 生成注意甄别