SSH逆セッションの終了


3

私は全国に約20台のマシンが散らばっていて(RPi)、それらはすべてモバイルネットワーク上にあります(パブリックIPを持っていません)。時折、私はマシンにアクセスする必要があるので、マシンが非常に頻繁にプルダウンしようとするレスキュースクリプト、そして私はそれにログインすることができるように私はそのスクリプトに私のサーバーに逆SSHをさせることができます。これはうまくいっていますが、どのように/どこでそのセッションを強制終了することができるのかを把握しようとしています。

基本的に、私はすべてのマシンで同じスクリプトを実行したいと思います(それらはすべて同時に実行されるわけではなく、とにかく特定のスクリプトのみをプルダウンします)。それで、私は彼らに私のサーバーに接続して欲しいです、そこで私はそれから何かのようにすることによってそれらにアクセスすることができます:

ssh -p 2222 pi@localhost

しかし、接続して終了してもこの接続は持続します。接続しようとしている別のマシンにも問題が発生すると私は思います。各マシンに独自のポート番号を与えたくないので、そのリバースSSHセッションを強制終了する方法を考え出す必要があります。それがPiで行われるのか、それとも私のサーバーで行われるのかわからない。何か案は?


SSHトンネルを開くためにリモートマシンで使用しているコマンドは何ですか?トンネルを閉じる最も簡単な方法は、 ps | grep <port_forwarded> リモートマシンでそれからそのPIDを殺して下さい。
ernie

私がSSHでマシンに直接接続していて(私はローカルにテストマシンを持っています)そしてpsを実行しているなら、sshが実行されているのがわかります。しかし、サーバからオープントンネルにSSHでアクセスしてpsを実行しても、SSHが実行されているようには見えないので、強制終了する必要はありません。
McB

申し訳ありませんが、私のpsコマンドはおそらく次のようになっているはずです。 ps aux あるいは、すべてのsshセッション(および実行中のプロセス)を一覧表示するものです。あなたがログインしているユーザーは、トンネルを開始したユーザーとは違うのでしょうか。
ernie

私が今働いているもの、そしてこれがそれをする最も簡単な方法であると思います、上記のコマンドで接続した後に、私はkill $(pidof ssh)を実行し、そしてセッションを解放します港。
McB

回答:


1

こうすることでうまくいきました。

kill $(pidof ssh)

現在のセッションだけでなく、開かれているすべてのセッションが強制終了されます。私はこれがあなたの場合には大丈夫だと思います。ここで私は見ることができます SSH_CLIENT そして SSH_CONNECTION どちらも対応するセッションのSSHポートを含むように見える環境変数。の助けを借りて netstat または lsof それらは現在のセッションの正確なPIDを識別するために使用される可能性があります。
scai

良い点ですが、私の特定のケースでは、一度に1つの接続だけでうまくいくことは間違いありません。頭を上げてくれてありがとう、おそらく時間があればもっと具体的な解決策を考え出すことに取り組むつもりです。
McB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.