科技 > 操作系统 > Windows

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

1人参与 2025-06-25 Windows

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

应该看到:

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

确保:

备用解决方案

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Win11预览版Dev 26200.5661/Beta 26120.4452今日推送:附更新内容汇总

06-24

1GB/s读写两倍于SATA SSD! 朗科USB3.2 固态U盘US9 评测

06-24

记得及时备份! 微软确认:Win11系统还原点有效期60天

06-23

Windows和macOS系统怎么调图片大小? 电脑快捷调节图片尺寸的教程

06-23

Win11 RP 22631.5548 预览版更新KB5060826发布:新增PC迁移功能

06-23

Win11新增功能测试中:支持用户定制屏幕指示器位置

06-23

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论