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

Written by

in

文章目录
  • 在 Windows 环境下解决 SSH 连接 GitHub 持续要求密码的问题需要特别注意 Windows 系统的特性。以下是针对 Windows 的完整解决方案:
  • 显示公钥内容: cat ~/.ssh/id_ed25519_github.pub 登录 GitHub > Settings > SSH and GPG keys 确保: 公钥完全匹配 密钥类型为 ED25519 没有多余的空格或换行
  • ssh -T git@github.com 成功时应显示: Hi yourusername! You’ve successfully authenticated, but GitHub does not provide shell access.
  • 步骤 命令 预期结果 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的完整步骤
  • 目录
    • 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的完整步骤

          站内搜索