在 WSL 终端上接受密钥后 SSH 挂起

SSH hangs after key is accepted on WSL Terminal

从 Git 回购(Bitbucket 和我的网络主机)推送和获取停止在 WSL 上工作。我发现在 shell 提示符出现之前,通过 ssh 连接挂起。使用 ssh -vvv 显示了这一点(我删除了我认为不重要的内容):

debug1: Authentication succeeded (publickey).
Authenticated to XXX.XXXX ([XXX.XXX.XXX.XXX]:XX).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: open confirm rwindow 0 rmax 32768

挂起前显示的上述内容的数量会有所不同。这是工作,但停止了。我已经更改了 ISP 和路由器(我已经从 ADSL 转到 NBN),我认为这是原因,但我可以使用 PowerShell(使用 OpenSSH)连接到同一台服务器。我试过创建新密钥,但得到了相同的结果。我只需要一些帮助来解决这个问题。

我是 运行 Ubuntu WSL 2 上的 18.04.3 LTS(Windows Build 18999,我已经进入内部快速通道尝试修复,但无法正常工作在慢速轨道上)。我是 运行 OpenSSH_7.6p1 Ubuntu-4ubuntu0.3,WSL 上的 OpenSSL 1.0.2n;和 OpenSSH_for_Windows_7.7p1,PowerShell 上的 LibreSSL 2.6.5。

不是真正的答案,但我的 .bash_profile 或 .bashrc 有问题。我最终只是重置了我的 Ubuntu 安装,并且能够重新设置。

SSH 在 WSL 2 上挂起(并完全挂起终端)是一个众所周知的问题。
它已在 WSL GitHub 上被多次报告(一些问题在没有真正解决问题的情况下被关闭)。
当前打开的工单示例如下:https://github.com/microsoft/WSL/issues/4690

有些人报告说,在 Ubuntu 上降低 MTU 可以为他们解决这个问题,但很多人(包括我)看不出有什么区别。

您可以在 Windows 上检查您的连接的 MTU:

netsh interface ipv4 show subinterfaces

然后将 Ubuntu 上的 MTU 设置为 较低的 值(参见此票证:https://github.com/microsoft/WSL/issues/7197):

sudo ip link set dev eth0 mtu 1300

但它实际上对我不起作用...
编辑: 在我重新安装 WSL 后,此解决方法开始对我部分起作用。我仍然偶尔会挂起,但现在不那么频繁了。