指南:修复 Windows Server 上的 Git SSH 访问问题

Temp mail SuperHeros
指南:修复 Windows Server 上的 Git SSH 访问问题
指南:修复 Windows Server 上的 Git SSH 访问问题

解决 Git SSH 连接问题

通过 SSH 与内部服务器建立可靠的 Git 连接可能具有挑战性,特别是当服务器是公司本地网络的一部分时。许多用户遇到 Git 无法访问远程存储库的问题,尽管能够通过 SSH 连接到服务器本身。

在本指南中,我们将探讨解决 Windows 计算机上的 Git SSH 访问问题的常见问题和解决方案。无论是存储库 URL 不正确还是访问权限配置错误,我们都会帮助您排查并修复这些连接问题,以确保 Git 操作顺利进行。

命令 描述
git init --bare 初始化一个裸 Git 存储库,适合用作远程存储库。
icacls . /grant everyone:F 在 Windows 上设置文件权限以允许所有用户完全控制,确保对存储库的访问。
git remote remove origin 从本地存储库中删除现有的远程存储库配置。
git remote add origin 将具有指定 URL 的新远程存储库添加到本地存储库。
Get-WindowsCapability 列出可以安装或已安装的 Windows 功能,包括 OpenSSH。
Start-Service sshd 在 Windows 上启动 SSH 服务器服务,启用 SSH 连接。
Set-Service -StartupType 'Automatic' 将服务配置为随 Windows 自动启动,确保 SSH 服务器始终运行。

了解 Git SSH 访问问题的解决方案

第一个脚本使用以下命令初始化 Windows 服务器上的裸 Git 存储库 git init --bare 命令。这是至关重要的,因为裸存储库被设计为其他用户可以从中推送和拉取的中央存储库。该脚本还将目录更改为所需位置并使用 icacls . /grant everyone:F 命令以确保所有用户都可以完全控制存储库。这对于避免阻止 Git 正确访问存储库的权限问题至关重要。

第二个脚本使用 Git Bash 在客户端计算机上配置 Git 远程。首先使用以下命令删除任何现有的遥控器 git remote remove origin 命令,确保与之前的配置不冲突。然后,它添加新的远程存储库 git remote add origin 命令,指定用于访问 Windows 服务器存储库的正确 URL 格式。最后,它验证远程 URL 并将更改推送到远程存储库,确保连接按预期工作。

配置 SSH 并确保连接

第三个脚本重点是使用 PowerShell 在 Windows 计算机上设置 SSH 服务器。它使用以下命令安装 OpenSSH 服务器功能 Get-WindowsCapability 命令,使用启动 SSH 服务器服务 Start-Service sshd,并将其配置为自动启动 Set-Service -StartupType 'Automatic' 命令。这些步骤对于确保 SSH 服务器始终运行并准备好接受连接至关重要。

通过执行这些脚本,您可以确保 Git 存储库已正确设置并可访问,并且 SSH 服务器已正确配置为允许安全连接。这些解决方案解决了阻止 Git 通过 SSH 访问远程存储库的常见问题,提供了一种在公司本地网络内推送和拉取更改的可靠方法。

在Windows服务器上设置裸存储库

在 Windows 上使用命令提示符 (CMD)

REM Change directory to the desired location
cd C:\path\to\desired\location

REM Initialize a bare repository
git init --bare gitTest.git

REM Verify the repository
cd gitTest.git
dir

REM Ensure the correct permissions
icacls . /grant everyone:F

更新客户端计算机上的 Git 配置

在客户端计算机上使用 Git Bash

# Remove any existing remote
git remote remove origin

# Add the remote repository using the correct URL format
git remote add origin ssh://admin@ipaddress/c/path/to/desired/location/gitTest.git

# Verify the remote URL
git remote -v

# Push changes to the remote repository
git push -u origin master

在 Windows Server 上配置 SSH 访问

在 Windows Server 上使用 PowerShell

# Install OpenSSH Server feature
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Get-WindowsCapability -Online | Add-WindowsCapability -Online

# Start the SSH server service
Start-Service sshd

# Set SSH server to start automatically
Set-Service -Name sshd -StartupType 'Automatic'

# Verify SSH server status
Get-Service -Name sshd

解决网络和配置问题

在内部服务器上通过 SSH 处理 Git 问题时,必须考虑网络配置和防火墙设置。即使 Windows Defender 防火墙已关闭,也可能存在其他网络限制。确保允许 SSH 流量,并且客户端和服务器端均打开必要的端口。此外,请仔细检查 SSH 服务器是否已正确配置为接受来自特定网络的连接。

另一个重要方面是 SSH 密钥配置。使用基于密码的身份验证可能可行,但为了更安全可靠的连接,建议设置 SSH 密钥。确保公钥已添加到 authorized_keys 服务器上的文件。此设置不仅增强了安全性,还可以防止与密码身份验证失败相关的问题,从而提高 Git 操作的整体连接性和效率。

有关 Git over SSH 问题的常见问题

  1. 为什么 Git 说“未找到存储库”?
  2. 如果存储库 URL 不正确或未正确指定存储库路径,通常会发生这种情况。确保 URL 符合格式 ssh://user@ipaddress/path/to/repo.git
  3. 如何检查 SSH 是否正常工作?
  4. 使用 ssh user@ipaddress 命令连接到服务器。如果可以正常登录,则说明 SSH 工作正常。
  5. 为什么我需要一个远程裸存储库?
  6. 裸存储库被设计为一个中央存储库,用户可以从中推送和拉取,而无需工作目录。
  7. SSH 密钥有哪些常见问题?
  8. 确保您的公钥位于 authorized_keys 文件在服务器上,并且私钥在客户端计算机上配置正确。
  9. 如何在 Windows 上重新启动 SSH 服务?
  10. 使用 Get-Service sshdRestart-Service sshd PowerShell 中的命令重新启动 SSH 服务。
  11. 存储库 URL 应该是什么样子?
  12. 它应该遵循以下格式: ssh://user@ipaddress/path/to/repo.git
  13. 如何确保我的存储库路径正确?
  14. 仔细检查服务器上的目录路径并确保其与应用程序中使用的 URL 匹配 git remote add 命令。
  15. 如何解决 SSH 连接问题?
  16. 检查服务器上的 SSH 日志是否有错误,并使用详细模式 ssh -v user@ipaddress 以获得详细的输出。
  17. 为什么我会收到权限被拒绝的错误?
  18. 确保用户具有访问存储库的正确权限,并且使用以下命令正确设置文件权限 icacls 在 Windows 上。
  19. 如何设置 SSH 密钥?
  20. 使用生成密钥对 17 号,然后将公钥复制到服务器的 authorized_keys 文件。

关于解决 Git SSH 问题的最终想法

解决 Windows 服务器上的 Git SSH 问题涉及几个关键步骤,从设置裸存储库到正确配置 SSH 访问。确保 SSH 服务器正在运行并正确配置,以及使用正确的存储库路径和权限,是克服这些挑战的关键。通过遵循提供的指南和脚本,您可以排查并修复这些问题,从而在本地网络中实现平稳的 Git 操作。采取这些措施不仅可以改善您的工作流程,还可以增强开发环境的安全性和可靠性。