文章目录
- 所有命令都应在 Git Bash 中执行(不是 CMD 或 PowerShell)
- # 打开配置文件 notepad ~/.ssh/config 确保内容为: Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github IdentitiesOnly yes
- ls -la ~/.ssh 应该看到: id_ed25519_github (私钥) id_ed25519_github.pub (公钥)
- # 设置 .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”
- # 启动 SSH 代理 eval $(ssh-agent -s) # 添加 GitHub 密钥 ssh-add ~/.ssh/id_ed25519_github # 验证密钥已添加 ssh-add -l
- # 安装 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
- ssh -Tv git@github.com 在输出中查找: 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:…
- 在 ~/.ssh/config 文件中,使用以下格式: IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github 而不是: IdentityFile ~/.ssh/id_ed25519_github # 在 Windows 可能有问题
- Windows 可能需要手动启动 SSH 代理服务: # 确保 SSH 代理运行 eval $(ssh-agent -s) # 如果提示找不到代理,手动启动 ssh-agent -s
- 确保 Git Bash 的环境变量设置正确: # 检查 HOME 变量 echo $HOME # 如果未设置,手动设置 export HOME=/c/Users/yourusername
- ssh-add /c/Users/yourusername/.ssh/id_ed25519_github
- # 备份旧配置 mv ~/.ssh ~/.ssh_backup # 创建新配置 mkdir ~/.ssh notepad ~/.ssh/config 粘贴: Host github.com HostName github.com User git IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github IdentitiesOnly yes
- # 生成新密钥 ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C “your_email@example.com” # 添加到 GitHub clip < ~/.ssh/id_ed25519_github.pub # 复制到剪贴板
- # 删除所有保存的凭据 git credential-manager reject https://github.com git credential-manager reject git@github.com # 清除缓存 git credential-manager clear
目录
- Windows 环境下解决 SSH 连接 GitHub 要求密码的问题
- 完整解决方案(Windows 专用)
- 1. 使用 Git Bash 进行操作
- 2. 验证 SSH 配置文件
- 3. 检查密钥文件是否存在
- 4. 设置正确的文件权限(Windows 关键步骤)
- 5. 启动 SSH 代理并添加密钥
- 6. 修复行尾格式(Windows 常见问题)
- 7. 测试详细连接
- Windows 特定问题解决方案
- 1. 确保使用正确的路径格式
- 2. 检查 SSH 代理服务
- 3. 检查系统环境变量
- 4. 使用绝对路径添加密钥
- 验证公钥是否添加到 GitHub
- 备用解决方案
- 1. 创建全新的 SSH 配置
- 2. 生成新密钥
- 3. 使用 Windows 凭据管理器
- 最终测试
- 如果所有方法都失败
- 1. 使用 HTTPS 替代 SSH
- 2. 使用 GitHub Desktop
- 3. 使用 GitHub CLI
- Windows SSH 连接检查表
在 Windows 环境下解决 SSH 连接 GitHub 持续要求密码的问题需要特别注意 Windows 系统的特性。以下是针对 Windows 的完整解决方案:
所有命令都应在 Git Bash 中执行(不是 CMD 或 PowerShell)
# 打开配置文件
notepad ~/.ssh/config
确保内容为:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github IdentitiesOnly yes
ls -la ~/.ssh
应该看到:

id_ed25519_github(私钥)id_ed25519_github.pub(公钥)
# 设置 .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"
# 启动 SSH 代理
eval $(ssh-agent -s)
# 添加 GitHub 密钥
ssh-add ~/.ssh/id_ed25519_github
# 验证密钥已添加
ssh-add -l
# 安装 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
ssh -Tv git@github.com
在输出中查找:
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:...
在 ~/.ssh/config 文件中,使用以下格式:
IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github
而不是:
IdentityFile ~/.ssh/id_ed25519_github # 在 Windows 可能有问题
Windows 可能需要手动启动 SSH 代理服务:
# 确保 SSH 代理运行 eval $(ssh-agent -s) # 如果提示找不到代理,手动启动 ssh-agent -s
确保 Git Bash 的环境变量设置正确:
# 检查 HOME 变量 echo $HOME # 如果未设置,手动设置 export HOME=/c/Users/yourusername
ssh-add /c/Users/yourusername/.ssh/id_ed25519_github
显示公钥内容:
cat ~/.ssh/id_ed25519_github.pub
登录 GitHub > Settings > SSH and GPG keys
确保:
- 公钥完全匹配
- 密钥类型为 ED25519
- 没有多余的空格或换行
# 备份旧配置
mv ~/.ssh ~/.ssh_backup
# 创建新配置
mkdir ~/.ssh
notepad ~/.ssh/config
粘贴:
Host github.com HostName github.com User git IdentityFile C:/Users/yourusername/.ssh/id_ed25519_github IdentitiesOnly yes
# 生成新密钥
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "your_email@example.com"
# 添加到 GitHub
clip < ~/.ssh/id_ed25519_github.pub # 复制到剪贴板
# 删除所有保存的凭据
git credential-manager reject https://github.com
git credential-manager reject git@github.com
# 清除缓存
git credential-manager clear
ssh -T git@github.com
成功时应显示:
Hi yourusername! You've successfully authenticated, but GitHub does not provide shell access.
# 设置全局使用 HTTPS
git config --global url."https://github.com/".insteadOf "git@github.com:"
安装 GitHub Desktop 并登录您的账户,它会自动处理认证
# 安装 GitHub CLI
winget install --id GitHub.cli
# 登录 GitHub
gh auth login
| 步骤 | 命令 | 预期结果 |
|---|---|---|
| 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 的完整输出,我可以进一步帮助诊断。
到此这篇关于Windows环境git配置多个ssh的实现步骤的文章就介绍到这了,更多相关git配置多个ssh内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Git ssh 配置及使用方法
- git ssh 配置多个账户的方法
- vscode中利用git通过ssh连接github的方法
- 使用SSH快速下载Git项目的实现方法
- git bash配置ssh 登录 Linux的方法
- git中ssh key配置详解
- git工具常用命令及ssh操作方法
- GitHub配置SSH Key的完整步骤