GitLab私有仓库克隆时遭遇SSH连接中止错误求助
兄弟,看你这情况是在通过SSH连接GitLab私有仓库时,卡在密钥交换阶段突然断连了对吧?从你贴的详细日志来看,明明已经和服务器建立了连接,结果在密钥交换环节直接中止了,我给你整理几个实用的排查方向,你挨个试试:
先把SSH密钥的基础问题捋清楚
私钥文件的权限一定要严格控制,Windows下你可以用PowerShell执行icacls test /inheritance:r /grant %USERNAME%:R把权限改成仅自己可读;另外绝对要确认这个密钥对应的公钥已经完整添加到GitLab账号的SSH密钥列表里,别漏了末尾的邮箱或者多打了空格。排查网络层面的拦截问题
很多时候是本地安全工具搞的鬼,先临时关掉防火墙、杀毒软件或者正在用的VPN试试;如果是公司内网,大概率是网关限制了22端口的出站连接,得找IT部门确认下;你也可以用tracert gitlab.aicrowd.com(Windows)或者traceroute gitlab.aicrowd.com(Linux/macOS)看看路由有没有断在某个节点。调整SSH客户端的密钥交换算法
有时候本地OpenSSH版本和GitLab服务器的算法不兼容,你可以在~/.ssh/config里加一段配置试试:Host gitlab.aicrowd.com IdentityFile test KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256或者直接在命令里指定算法:
ssh -i test -o KexAlgorithms=curve25519-sha256@libssh.org -T gitlab.aicrowd.com用HTTPS方式做对比测试
试试用HTTPS链接克隆仓库,如果能成功,那问题就锁定在SSH配置上;如果也不行,那可能是GitLab服务器本身有问题,或者你的网络根本连不上服务器。
附上你提供的测试日志:
$ ssh -i test -T -vvvv git@gitlab.aicrowd.com OpenSSH_9.3p1, OpenSSL 1.1.1u 30 May 2023 debug1: Reading configuration data /etc/ssh/ssh_config debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/c/Users/****/.ssh/known_hosts' debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/c/Users/****/.ssh/known_hosts2' debug2: resolving "gitlab.aicrowd.com" port 22 debug3: resolve_host: lookup gitlab.aicrowd.com:22 debug3: ssh_connect_direct: entering debug1: Connecting to gitlab.aicrowd.com [*.*.*.*] port 22. debug3: set_sock_tos: set socket 4 IP_TOS 0x48 debug1: Connection established. debug1: identity file test type 0 debug1: identity file test-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_9.3 kex_exchange_identification: read: Software caused connection abort
备注:内容来源于stack exchange,提问作者ayman cheddad

