如何避免使用共享 ssh 连接时第一个 ssh 客户端挂起

如何避免使用共享 ssh 连接时第一个 ssh 客户端挂起

网络上有很多关于如何使用连接共享的示例:

ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

但是,我发现第一个 ssh 连接(如果相关的话,这是使用 git 的)会挂在一个奇怪的地方(我相信是在退出时)——任何尝试pstackgit 进程甚至kill -9什么都不做。所有有效的方法是终止调用进程。

但是,看起来 ssh 连接套接字已经设置好了(现在有一个 ssh 进程正在运行,ps 显示为ssh: /home/ttanner/.ssh/sockets/user@host-22 [mux]),并且后续 ssh 似乎工作正常。

这很烦人,因为 git 似乎花了相当多的时间来处理 ssh 连接,我们真的很想在我们的 CI 系统中使用它——当我们不知道在哪台机器上运行任何特定的 git 命令时,挂在第一个连接上并不是一个好选择

附录:运行调试时显示以下奇怪的消息:

debug3: mux_client_read_packet: read header failed: Broken pipe

这可能意味着共享实际上根本没有起作用,只是在后续的连接中 git 并不关心并且正在使用本地信息。

相关内容