ssh+command
はプロクシとして使う時に非常に便利。
ssh ... nc ...
とか。
ところが不適切な設定でこのコマンドを多様するとリモートに大量のプロセスやsshセッションが残る事がある。
例えば、CTRL+C
でsshにシグナルを流して殺してもリモートのプロセスにはシグナルは飛ばないので、リモートのプロセスは走り続ける。
この場合何らかの方法で自発的にリモートプロセスに死んでもらう必要がある。nc -q
とか。
ssh -t
でttyセッションを開いた場合、CTRL+C
するとConnection to ... Closed.
と表示される。
リモートのシェルを通してリモートのプロセスにシグナルが飛び、子プロセスが死んだのでリモート側からsshセッションを閉じるため。
この場合、逆にキー入力でローカルのプロセスにシグナルを送る事ができない。
何がしたいかによって対処の仕方は変わるので、sshでコマンドを実行する時はプロセスがどこで走っているのか、親子関係、シグナルの流れに注意する事が大事。