返回顶部
分享到

Windows环境git配置多个ssh的实现

相关技巧 来源:互联网 作者:佚名 发布时间:2025-06-25 22:31:13 人浏览
摘要

Windows 环境下解决 SSH 连接 GitHub 要求密码的问题 在 Windows 环境下解决 SSH 连接 GitHub 持续要求密码的问题需要特别注意 Windows 系统的特性。以下是针对 Windows 的完整解决方案: 完整解决方案(

Windows 环境下解决 SSH 连接 GitHub 要求密码的问题

在 Windows 环境下解决 SSH 连接 GitHub 持续要求密码的问题需要特别注意 Windows 系统的特性。以下是针对 Windows 的完整解决方案:

完整解决方案(Windows 专用)

1. 使用 Git Bash 进行操作

所有命令都应在 ??Git Bash?? 中执行(不是 CMD 或 PowerShell)

2. 验证 SSH 配置文件

1

2

# 打开配置文件

notepad ~/.ssh/config

确保内容为:

1

2

3

4

5

Host github.com

  HostName github.com

  User git

  IdentityFile ~/.ssh/id_ed25519_github

  IdentitiesOnly yes

3. 检查密钥文件是否存在

1

ls -la ~/.ssh

应该看到:

  • id_ed25519_github (私钥)
  • id_ed25519_github.pub (公钥)

4. 设置正确的文件权限(Windows 关键步骤)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# 设置 .ssh 目录权限

icacls "$HOME/.ssh" /reset

icacls "$HOME/.ssh" /inheritance:r

icacls "$HOME/.ssh" /grant:r "$USERNAME:(OI)(CI)F"

 

# 设置私钥权限

icacls "$HOME/.ssh/id_ed25519_github" /reset

icacls "$HOME/.ssh/id_ed25519_github" /grant:r "$USERNAME:F"

 

# 设置公钥权限

icacls "$HOME/.ssh/id_ed25519_github.pub" /reset

icacls "$HOME/.ssh/id_ed25519_github.pub" /grant:r "$USERNAME:F"

 

# 设置配置文件权限

icacls "$HOME/.ssh/config" /reset

icacls "$HOME/.ssh/config" /grant:r "$USERNAME:F"

5. 启动 SSH 代理并添加密钥

1

2

3

4

5

6

7

8

# 启动 SSH 代理

eval $(ssh-agent -s)

 

# 添加 GitHub 密钥

ssh-add ~/.ssh/id_ed25519_github

 

# 验证密钥已添加

ssh-add -l

6. 修复行尾格式(Windows 常见问题)

1

2

3

4

5

6

# 安装 dos2unix(如果未安装)

curl -L https://sourceforge.net/projects/dos2unix/files/dos2unix/7.4.1/dos2unix-7.4.1-win64.zip/download -o dos2unix.zip

unzip dos2unix.zip -d /usr/bin

 

# 转换 config 文件格式

dos2unix ~/.ssh/config

7. 测试详细连接

1

ssh -Tv git@github.com

在输出中查找:

1

2

debug1: Offering public key: /c/Users/yourusername/.ssh/id_ed25519_github ED25519 SHA256:...

debug1: Server accepts key: /c/Users/yourusername/.ssh/id_ed25519_github ED25519 SHA256:...

Windows 特定问题解决方案

1. 确保使用正确的路径格式

在 ~/.ssh/config 文件中,使用以下格式:

1

IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github

而不是:

1

IdentityFile ~/.ssh/id_ed25519_github  # 在 Windows 可能有问题

2. 检查 SSH 代理服务

Windows 可能需要手动启动 SSH 代理服务:

1

2

3

4

5

# 确保 SSH 代理运行

eval $(ssh-agent -s)

 

# 如果提示找不到代理,手动启动

ssh-agent -s

3. 检查系统环境变量

确保 Git Bash 的环境变量设置正确:

1

2

3

4

5

# 检查 HOME 变量

echo $HOME

 

# 如果未设置,手动设置

export HOME=/c/Users/yourusername

4. 使用绝对路径添加密钥

1

ssh-add /c/Users/yourusername/.ssh/id_ed25519_github

验证公钥是否添加到 GitHub

显示公钥内容:

1

cat ~/.ssh/id_ed25519_github.pub

登录 GitHub > Settings > SSH and GPG keys

确保:

  • 公钥完全匹配
  • 密钥类型为 ED25519
  • 没有多余的空格或换行

备用解决方案

1. 创建全新的 SSH 配置

1

2

3

4

5

6

# 备份旧配置

mv ~/.ssh ~/.ssh_backup

 

# 创建新配置

mkdir ~/.ssh

notepad ~/.ssh/config

粘贴:

1

2

3

4

5

Host github.com

  HostName github.com

  User git

  IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github

  IdentitiesOnly yes

2. 生成新密钥

1

2

3

4

5

# 生成新密钥

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "your_email@example.com"

 

# 添加到 GitHub

clip < ~/.ssh/id_ed25519_github.pub  # 复制到剪贴板

3. 使用 Windows 凭据管理器

1

2

3

4

5

6

# 删除所有保存的凭据

git credential-manager reject https://github.com

git credential-manager reject git@github.com

 

# 清除缓存

git credential-manager clear

最终测试

1

ssh -T git@github.com

成功时应显示:

1

Hi yourusername! You've successfully authenticated, but GitHub does not provide shell access.

如果所有方法都失败

1. 使用 HTTPS 替代 SSH

1

2

# 设置全局使用 HTTPS

git config --global url."https://github.com/".insteadOf "git@github.com:"

2. 使用 GitHub Desktop

安装 GitHub Desktop 并登录您的账户,它会自动处理认证

3. 使用 GitHub CLI

1

2

3

4

5

# 安装 GitHub CLI

winget install --id GitHub.cli

 

# 登录 GitHub

gh auth login

Windows SSH 连接检查表

步骤 命令 预期结果
1. 验证配置文件 cat ~/.ssh/config 显示正确的 GitHub 配置
2. 检查密钥文件 ls -la ~/.ssh 显示私钥和公钥文件
3. 设置权限 icacls 命令 无错误输出
4. 启动代理 eval $(ssh-agent -s) 显示代理 PID
5. 添加密钥 ssh-add ~/.ssh/id_ed25519_github "Identity added" 消息
6. 测试连接 ssh -T git@github.com 成功认证消息

请按照这些步骤操作,特别注意 Windows 的文件权限和路径格式问题。如果问题仍然存在,请提供 ssh -Tv git@github.com 的完整输出,我可以进一步帮助诊断。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Windows环境git配置多个ssh的实现

    Windows环境git配置多个ssh的实现
    Windows 环境下解决 SSH 连接 GitHub 要求密码的问题 在 Windows 环境下解决 SSH 连接 GitHub 持续要求密码的问题需要特别注意 Windows 系统的特性。以
  • 浏览器插件cursor实现自动注册、续杯的过程

    浏览器插件cursor实现自动注册、续杯的过程
    无需下载、安装任何软件,浏览器实现无限续杯 我认为最强的武功就是用自己打败自己,就在刚刚根据从一个佬那里得来的思想,我决定用
  • Git配置SSH密钥与私钥的教程(跨平台完整指南)
    在使用 Git 进行版本控制时,SSH 是一种安全、高效的认证方式。通过配置 SSH 密钥对(公钥和私钥),我们可以免去每次操作远程仓库时输入
  • git stash命令基本用法介绍
    git stash是 Git 中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还
  • 如何快速解决连接git/github失败的问题

    如何快速解决连接git/github失败的问题
    Git连接出错 完成基础配置后,始终不能进行git push/git clone,ping github.com 总是显示往 127.0.0.1 发送测试包 镜像法 关于解决git clone问题可以直
  • git进阶之hooks勾子脚本介绍
    Git Hooks是Git的一个重要特性,它允许用户在Git仓库中定义一些自动化的脚本,这些脚本可以在特定的Git事件(如提交代码、接收代码等)发
  • git如何查看提交行数、删除行数
    统计指定用户提交代码情况 1 git log --author=你的名字 --pretty=tformat: --numstat | awk { add += $1; subs += $2; loc += $1 - $2 } END { printf added lines: %s, remove
  • GitLab文件的上传与下载方式
    GitLab 项目拉取到本地 1 2 3 4 5 6 # 拉取git项目到本地 -b参数为选择拉取的特定分支 git clone -b dev http://gitlab.yuan.cn/AI_PRODUCT/deplibs_v4.0/chat.git #
  • DDoS攻击多种方式的原理分析和防护方法

    DDoS攻击多种方式的原理分析和防护方法
    DDoS攻击通过多主机发起海量请求,导致服务器过载,影响服务,攻击方式包括僵尸网络、漏洞利用等,分为SYN flood、ACK flood、UDP flood、反射放大、
  • Git可视化管理工具(SourceTree)使用操作

    Git可视化管理工具(SourceTree)使用操作
    俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有Sour
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计