使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”

Posted

技术标签:

【中文标题】使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”【英文标题】:git clone using ssh connection fails "Connection reset by <server_IP> port 7999" 【发布时间】:2022-01-22 15:20:59 【问题描述】:

我想使用 ssh 身份验证克隆 bitbucket 存储库,因为通过 https 方法进行克隆会导致我的存储库之一的连接超时错误,该存储库的存储空间为 1Gb+。

我在 Windows 客户端上使用“ssh-keygen”生成了 ssh 密钥,公钥 (id_rsa) 已添加到我的 bitbucket 帐户中。设置 --> 管理帐户 ---> SSH 密钥

Bitbucket DataCenter 托管在 Azure linux(Ubuntu) vm 上,默认 ssh 端口 7999 在我的机器 ip 的 azure 防火墙上被列入白名单,并且在 linux 服务器上没有激活内部防火墙。

我的帐户拥有系统管理员权限。

git clone ssh://git@serverURL:7999/dem/projectname.git

错误信息:

Cloning into 'projectname'...
kex_exchange_identification: read: Connection reset by peer
Connection reset by Server_ip port 7999
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.  

我还尝试在 bitbucket 服务器上的 /etc/hosts.allow 中添加“sshd: mySystem_IP”,但仍然出现相同的错误。

有没有人遇到过类似的问题?不确定我在这里的配置中缺少什么。感谢您的宝贵时间!

使用 ssh -vT 进行调试:

ssh -vT ssh://git@bitbucket_url.com:7999
OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to Server_IP port 7999.
debug1: Connection established.
debug1: identity file /c/Users/user_name/.ssh/id_rsa type 0
debug1: identity file /c/Users/user_name/.ssh/id_rsa-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_dsa type -1
debug1: identity file /c/Users/user_name/.ssh/id_dsa-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_ecdsa type -1
debug1: identity file /c/Users/user_name/.ssh/id_ecdsa-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_ecdsa_sk type -1
debug1: identity file /c/Users/user_name/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_ed25519 type 3
debug1: identity file /c/Users/user_name/.ssh/id_ed25519-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_ed25519_sk type -1
debug1: identity file /c/Users/user_name/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /c/Users/user_name/.ssh/id_xmss type -1
debug1: identity file /c/Users/user_name/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.8
kex_exchange_identification: read: Connection reset by peer
Connection reset by Server_IP port 7999

【问题讨论】:

在你的调试中多使用几个vs。可能发生的事情是您的 ssh 和他们的 sshd 无法就密钥交换算法达成一致。 (请注意,旧的 ssh 程序会尝试使用不安全的小 RSA 密钥,而新的 sshd 会拒绝。这也可以反过来,新的客户端拒绝与旧的服务器通信。) @phd 使用 traceroute 命令后的输出:“无法处理位置 1 (argc 5) 上的 "host" cmdline arg `bitbucket_url [localhost:7990]'” @torek 尝试使用多个 V 仍然获得相同的调试输出。如何确定是否有任何一个 Windows 客户端或 linux 服务器正在使用旧的 sshd,因为哪个拒绝连接? 通常你会收到一些 debug2debug3 消息,例如,debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c 显示了我有哪些密钥交换算法作为我的 ssh -Tvvv git@github.com 的选项。 您的系统上有 OpenSSH 8.8p1(见输出的第一行),它非常现代。所以我怀疑bitbucket服务器系统上有一个过期的sshd。 【参考方案1】:

感谢您对问题的所有投入,非常感谢。它帮助我获得了新的信息。 但是,即使按照@torek 的建议将 OpenSSH 更新到最新版本,我也面临同样的问题。 最后我尝试使用与默认 RSA 不同的加密算法。

ssh-keygen uses RSA by default for generation of access keys.
ssh-keygen -t ed25519 -C "Comment"  uses elliptic curve cryptography

ssh-keygen -t ed25519 为我工作

SSH 密钥位置:C:\Users\UserName.ssh 从文件 id_ed25519.pub 复制密钥内容,并将此公钥添加到您的 Bitbucket 帐户中。 设置 --> 管理帐户 ---> SSH 密钥

这将建立与 Bitbucket 服务器的连接,并且您的存储库将使用 ssh url 毫无问题地被克隆。

git clone &lt;ssh_repository_url&gt;

【讨论】:

以上是关于使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”的主要内容,如果未能解决你的问题,请参考以下文章

git clone失败

连接到 gitlab 时使用 ssh 面临身份验证失败

用ssh方式git clone,能不每次都输密码吗?

git clone 失败问题解决方案

cPanel 中的 GIT 存储库连接失败

SSH方式连接Git