web-dev-qa-db-ja.com

ControlPersistをオンにしてSSHがフリーズする

最近、SSHでControlMasterControlPersistを有効にして、接続を再利用して多重化して速度を上げました。構成は次のとおりです。

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h

ControlPersistをオフにすると、すべて問題ありません。ただし、onの場合、最初のgit/hg接続は常にフリーズします。通常(シェルで)SSHを使用すると、初めて正常に機能しますが、git/hgがフリーズします。 ctrl + Cで停止してから再試行すると、すでに確立されている接続を使用してマルチプレックスし、高速になりますが、最初は実行されません。 LogLevelを11にすると、次のようになります。

remote: debug2: fd 4 setting O_NONBLOCK
remote: debug1: forking to background
remote: debug1: Entering interactive session.
remote: debug2: set_control_persist_exit_time: schedule exit in 14400 seconds
remote: debug1: multiplexing control connection
remote: debug2: fd 5 setting O_NONBLOCK

その時点で、それはただフリーズし、永遠にそこにとどまります。どうしましたか?

同じ動作が見られますが、これはOpenSSHのバグが原因だと思います: https://bugzilla.mindrot.org/show_bug.cgi?id=1988 (ControlPersistによってstderrが残されますマスター接続がタイムアウトするまで開きます)

うまくいけば、それは最終的に修正されるでしょう。

2
Soulman