以前かなり入念に設定して外出中もSSHでログインできるようにしたはずだったのだが、実際に試してみるとうまくいかないケースがあった。前回の設定で、SSHが死ねば再度コネクションを貼り直すようにしたし、サーバーから一定時間応答がなければ死んだとみなすようになっていた。これで万全のはずだった。ところが、サーバーからPONGは届いているにもかかわらず、ポートフォワーディングは死んでいる...という事態に遭遇したのだ。そんなことになるというのか。発生するものは仕方ない。実際にログインできない場合には無理やり貼り直すことにしよう。方法としては割と単純で、自分自身に対するものではあるが、一旦サーバーにSSHで接続し、そこからSSHで手元のコンピュータに対してログインしコマンドを実行する。これに失敗すればコネクションが切れているとみなす。ProxyCommandを使う必要はなく、単純にsshのコマンドとしてsshを含めればいい。true新しく鍵を作ってサーバーに登録する。サーバーで実行するコマンドはsshである。逆にサーバーでも新しい鍵を作って手元コンピュータに登録する。互いにコマンド実行用の鍵を登録することになる。サーバー側で結びつけるコマンドはsshである。このSSHで~/.ssh/configによってターゲットコンピュータに対してログインするホストを指定する。target-pc-connection-checkである。ターゲット側では次のように登録する。~/.ssh/target-pc-connection-check-via-server_rsaこれでターゲットコンピュータがこの鍵でサーバーにログインすると自動的にサーバーはSSHを実行しターゲットコンピュータにSSHポートフォワーディングを介して接続しようとする。自動化のためそれぞれの鍵にはパスワードはかけない。OKあたりでも良いだろう。OKとすれば、コネクションが到達するかどうかをチェックできる。Systemdユニットに組み込むと面倒なことになるので、システムトレイアプリに組み込む。