*注:使用 Windows 10(我知道,我知道...这就是他们给我的 :/)
大家好,
我是 GitLab 新手,但我的公司有自己的 GitLab 服务器,我将在其中存放项目的存储库、推送提交等。我正在尝试设置 ssh 密钥对,但我遇到了困难,不太确定该怎么做。我按照 gitlab 网站上的说明设置了 ssh 密钥对。我现在有一个C:/Users/{username}/.ssh
包含文件id_rsa
、id_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 连接,但随后立即被丢弃,因为它不是启用的“真实”服务。干杯!