Hubサーバーから別のサーバーにログインしてバックアップを実行するには、SSH接続の自動化が必須です。しかし、ここでインフラ特有の壁に何度もぶつかりました。
ポートの罠: XサーバーのSSHは標準の 22 ではなく 10022。これをAPIで事前に確認する処理を挟まないと永遠にタイムアウトします。
鍵認証の罠: Hub側のOpenSSHのバージョンが古く、便利なオプション(accept-new)が使えませんでした。そのため、事前に ssh-keyscan でホスト鍵を取得・登録するアナログな処理を組み込みました。
セキュリティを担保するため、個人用の鍵は使わず「ハブ・リモート専用のデプロイ鍵」を生成してAPIで自動登録する仕組みも実装しました。
編集後記:
ポート22で一生弾かれ続け、「なぜ繋がらないんだ!」と画面の前で一人叫んでいました。インフラの設定ミスは本当に原因究明が難しくて、本気で泣きそうになりました。
