Codeberg への SSH 接続が Connection closed で蹴られる場合は SSH-Agent を使うとうまくいく(かもしれない)
前回の記事で Codeberg はオレオレ N6 の古い OpenSSH + OpenSSL(7.5 + 1.0.2dev) からの接続を拒否するという話を書いてしまったのだが(消去済)、10.2p1 + 3.6.1 でも謎の接続拒否が頻発するので調べたらバージョン関係なかったわ。
どうやら SSH-Agent を使わず都度パスフレーズ認証を行ってると
Connection closed by 217.197.84.140 port 22
と接続拒否されるのだ。
ssh -vvvT git@codeberg.org
でデバッグかけてみたのだが
--- fail.txt 2026-04-18 03:06:49.945488687 +0900
+++ success.txt 2026-04-18 03:08:17.835094163 +0900
@@ -141,27 +141,104 @@
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
+debug3: ssh_get_authentication_socket_path: path '/home/tnozaki/.ssh/agent/s.6uheEntUaJ.agent.8q5JOhoilU'
+debug1: get_agent_identities: bound agent to hostkey
+debug1: get_agent_identities: agent returned 1 keys
+debug1: Will attempt key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M agent
debug1: Will attempt key: /home/tnozaki/.ssh/id_rsa
debug1: Will attempt key: /home/tnozaki/.ssh/id_ecdsa ECDSA SHA256:lqFeSfpEZ8KuGNqZBsi/Os8gvFoIy6E059y+52aVf4w
debug1: Will attempt key: /home/tnozaki/.ssh/id_ecdsa_sk
-debug1: Will attempt key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M
debug1: Will attempt key: /home/tnozaki/.ssh/id_ed25519_sk
debug2: pubkey_prepare: done
-debug1: Trying private key: /home/tnozaki/.ssh/id_rsa
-debug3: no such identity: /home/tnozaki/.ssh/id_rsa: No such file or directory
-debug1: Offering public key: /home/tnozaki/.ssh/id_ecdsa ECDSA SHA256:lqFeSfpEZ8KuGNqZBsi/Os8gvFoIy6E059y+52aVf4w
-debug3: send packet: type 50
-debug2: we sent a publickey packet, wait for reply
-debug3: receive packet: type 51
-debug1: Authentications that can continue: publickey
-debug1: Trying private key: /home/tnozaki/.ssh/id_ecdsa_sk
-debug3: no such identity: /home/tnozaki/.ssh/id_ecdsa_sk: No such file or directory
-debug1: Offering public key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M
+debug1: Offering public key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M agent
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
-debug1: Server accepts key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M
+debug1: Server accepts key: /home/tnozaki/.ssh/id_ed25519 ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M agent
debug3: sign_and_send_pubkey: using publickey-hostbound-v00@openssh.com with ED25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M
debug3: sign_and_send_pubkey: signing using ssh-ed25519 SHA256:sUXcTfglJXoraUeOYXfEyafoJHTvZfhkPST9Bje8u5M
debug3: send packet: type 50
-Connection closed by 217.197.84.140 port 22
+debug3: receive packet: type 52
+Authenticated to codeberg.org ([217.197.84.140]:22) using "publickey".
...
という結果になる、つまりこれ単純にサーバー側でタイムアウトが凶悪に短く設定されてて、俺がクソ長いパスフレーズをモタモタ手打ちしてると間に合わねえってことかオイ!?
Linux と Windows で発生しなかったのでオレオレ N6 だけの問題かと思ってたのだが、Bitwarden SSH-Agent が常時動いてたから問題起きなかっただけで無効にしたら等しく再現するようになった。 またパスフレーズを手打ちでなくコピペで貼っつけても問題起きないので、原因はタイムアウトということらしい。
あ ほ く さ。