设置 ssh 密钥以连接到 gitlab

设置 ssh 密钥以连接到 gitlab

*注:使用 Windows 10(我知道,我知道...这就是他们给我的 :/)

大家好,

我是 GitLab 新手,但我的公司有自己的 GitLab 服务器,我将在其中存放项目的存储库、推送提交等。我正在尝试设置 ssh 密钥对,但我遇到了困难,不太确定该怎么做。我按照 gitlab 网站上的说明设置了 ssh 密钥对。我现在有一个C:/Users/{username}/.ssh包含文件id_rsaid_rsa.pub和 的文件夹known_hosts

我读到需要配置文件,根据我通过搜索拼凑起来的信息,我在记事本中写了一个配置文件,内容如下

# GitLab.com
Host git.{mycompany}.org
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

# Private GitLab instance
Host git.{mycompany}.org
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

尽管我已将密钥添加到我的 GitLab 帐户,但我仍然无法连接到服务器。

运行时ssh -Tvvv git@git.{mycompany}.org,输出为:

OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\{user}/.ssh/config
debug1: C:\\Users\\{user}/.ssh/config line 2: Applying options for git.{mycompany}.org
debug1: C:\\Users\\{user}/.ssh/config line 7: Applying options for git.{mycompany}.org
debug2: add_identity_file: ignoring duplicate key ~/.ssh/id_rsa
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolving "git.{mycompany}.org" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to git.{mycompany}.org {ip.address.masked} port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\{user}/.ssh/id_rsa type 0
debug3: Failed to open file:C:/Users/{user}/.ssh/id_rsa-cert error:2
debug3: Failed to open file:C:/Users/{user}/.ssh/id_rsa-cert.pub error:2
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\{user}/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
ssh_exchange_identification: Connection closed by remote host

(显然,括号里的内容是为了保护隐私而编辑的)。

很抱歉,我问的是一般性和基本性的问题,但我有点不知所措,真的很想让它正常工作,这样我就可以停止通过网络浏览器手动上传提交 ><

答案1

debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
ssh_exchange_identification: Connection closed by remote host

这基本上意味着远程服务器在接受 SSH 连接后立即关闭它。

最简单的解释是,远程服务器由于某种原因配置为不接受来自您的 IP 地址的 SSH 连接。有些系统使用TCP 包装器来控制这一点。OpenSSH 服务器也有自己的指令,可以添加到其sshd_config文件中。

如果您是远程服务器的管理员,请检查 sshd 日志(可能在/var/logs目录中)以查看是否记录了断开连接的原因。如果您不是管理员,请联系管理员寻求帮助。

答案2

虽然我将 Kenster 的答案标记为正确(他确实正确),但以防其他人遇到类似的问题,我从 IT 部门了解到我们的 gitlab 服务器已禁用 SSH——我看到的“连接”是公司使用的 Zscaler 私有访问系统的产物。SSH 通过私有访问防火墙建立 TCP 连接,但随后立即被丢弃,因为它不是启用的“真实”服务。干杯!

相关内容