私は全国に約20台のマシンが散らばっていて(RPi)、それらはすべてモバイルネットワーク上にあります(パブリックIPを持っていません)。時折、私はマシンにアクセスする必要があるので、マシンが非常に頻繁にプルダウンしようとするレスキュースクリプト、そして私はそれにログインすることができるように私はそのスクリプトに私のサーバーに逆SSHをさせることができます。これはうまくいっていますが、どのように/どこでそのセッションを強制終了することができるのかを把握しようとしています。
基本的に、私はすべてのマシンで同じスクリプトを実行したいと思います(それらはすべて同時に実行されるわけではなく、とにかく特定のスクリプトのみをプルダウンします)。それで、私は彼らに私のサーバーに接続して欲しいです、そこで私はそれから何かのようにすることによってそれらにアクセスすることができます:
ssh -p 2222 pi@localhost
しかし、接続して終了してもこの接続は持続します。接続しようとしている別のマシンにも問題が発生すると私は思います。各マシンに独自のポート番号を与えたくないので、そのリバースSSHセッションを強制終了する方法を考え出す必要があります。それがPiで行われるのか、それとも私のサーバーで行われるのかわからない。何か案は?
私がSSHでマシンに直接接続していて(私はローカルにテストマシンを持っています)そしてpsを実行しているなら、sshが実行されているのがわかります。しかし、サーバからオープントンネルにSSHでアクセスしてpsを実行しても、SSHが実行されているようには見えないので、強制終了する必要はありません。
—
McB
申し訳ありませんが、私のpsコマンドはおそらく次のようになっているはずです。
—
ernie
ps aux
あるいは、すべてのsshセッション(および実行中のプロセス)を一覧表示するものです。あなたがログインしているユーザーは、トンネルを開始したユーザーとは違うのでしょうか。
私が今働いているもの、そしてこれがそれをする最も簡単な方法であると思います、上記のコマンドで接続した後に、私はkill $(pidof ssh)を実行し、そしてセッションを解放します港。
—
McB
ps | grep <port_forwarded>
リモートマシンでそれからそのPIDを殺して下さい。