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

 更新时间:2025年06月25日 09:21:05   作者:比特森林探险记  
本文主要介绍了在Windows环境下解决SSH连接GitHub持续要求密码的问题

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

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

完整解决方案(Windows 专用)

1. 使用 Git Bash 进行操作

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

2. 验证 SSH 配置文件

# 打开配置文件
notepad ~/.ssh/config

确保内容为:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github
  IdentitiesOnly yes

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

ls -la ~/.ssh

应该看到:

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

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

# 设置 .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 代理并添加密钥

# 启动 SSH 代理
eval $(ssh-agent -s)

# 添加 GitHub 密钥
ssh-add ~/.ssh/id_ed25519_github

# 验证密钥已添加
ssh-add -l

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

# 安装 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. 测试详细连接

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:...

Windows 特定问题解决方案

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

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

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

而不是:

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

2. 检查 SSH 代理服务

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

# 确保 SSH 代理运行
eval $(ssh-agent -s)

# 如果提示找不到代理,手动启动
ssh-agent -s

3. 检查系统环境变量

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

# 检查 HOME 变量
echo $HOME

# 如果未设置,手动设置
export HOME=/c/Users/yourusername

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

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

验证公钥是否添加到 GitHub

显示公钥内容:

cat ~/.ssh/id_ed25519_github.pub

登录 GitHub > Settings > SSH and GPG keys

确保:

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

备用解决方案

1. 创建全新的 SSH 配置

# 备份旧配置
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

2. 生成新密钥

# 生成新密钥
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_github -C "your_email@example.com"

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

3. 使用 Windows 凭据管理器

# 删除所有保存的凭据
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.

如果所有方法都失败

1. 使用 HTTPS 替代 SSH

# 设置全局使用 HTTPS
git config --global url."https://github.com/".insteadOf "git@github.com:"

2. 使用 GitHub Desktop

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

3. 使用 GitHub CLI

# 安装 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 的完整输出,我可以进一步帮助诊断。

到此这篇关于Windows环境git配置多个ssh的实现步骤的文章就介绍到这了,更多相关git配置多个ssh内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 修改hosts文件无权限的解决办法

    修改hosts文件无权限的解决办法

    当我们在hosts文件中修改内容后,点击保存,系统会弹出我们没有权限的问题,所以本文通过图文结合的方式给大家详细的介绍了解决办法,对我们解决问题有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • linux系统使用vscode进行qt开发的过程分享

    linux系统使用vscode进行qt开发的过程分享

    最近在Linux上搞Qt,搞的一头雾水,小编把整个过程记录下,分享需要的朋友,如果大家对linux系统使用vscode进行qt开发相关知识感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • Git常用场景使用之分支操作

    Git常用场景使用之分支操作

    这篇文章主要介绍了Git常用场景使用-分支操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 在Linux下搭建Git服务器的方法详解

    在Linux下搭建Git服务器的方法详解

    虽然用Git的人不多,但是git不仅仅是svn等版本控制系统的替换工具,它自己强大的功能,稳定的性能,方便快捷等优点自然不需多说,不了解的人自行去网上查看。本文将会详细介绍在Linux下搭建Git服务器的方法,有需要的朋友们可以参考借鉴。
    2016-09-09
  • git clone 子模块没下载全的问题解决

    git clone 子模块没下载全的问题解决

    这篇文章主要介绍了git clone 子模块没下载全的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详解IDEA git分支回退指定的历史版本

    详解IDEA git分支回退指定的历史版本

    这篇文章主要介绍了详解IDEA git分支回退指定的历史版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • HTTP协议简介_动力节点Java学院整理

    HTTP协议简介_动力节点Java学院整理

    这篇文章主要介绍了HTTP协议简介,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • kali添加开机自启的方法

    kali添加开机自启的方法

    采用systemd的方法,kali默认是没有rc.local的,需要自己创建。本方法也适用于ubuntu 18.04 64bit,对kali添加开机自启知识感兴趣的朋友一起看看吧
    2022-09-09
  • VSCode报错:Vetur can't find 'tsconfig.json' or 'jsconfig.json'解决办法

    VSCode报错:Vetur can't find 'tsconfig.json' 

    最近在使用VScode打开项目时发现报错了,所以下面这篇文章主要给大家介绍了关于VSCode报错:Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘解决办法,需要的朋友可以参考下
    2022-08-08
  • 大规格文件的上传优化思路详解

    大规格文件的上传优化思路详解

    这篇文章主要介绍了大规格文件的上传优化,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论