GNU/Linux >> Linux の 問題 >  >> Linux

ssh ControlMaster 接続が使用されているかどうかを確認する方法

単純に

を使用できます
ssh -o ControlPath=$socket -O check 

開いた $socket ごとに (単一のディレクトリに保存すると簡単です)。

これは、チェックが失敗した場合 (接続がアクティブでなくなった場合) 255 を返し、パスした場合は別の値を返します。ホスト名も指定する必要があるかもしれませんが、$socket の awk が提供しないものは何もありません:)


@Renik の回答はうまくいきませんでした。何が行われたかについては、以下を参照してください。

これは、コントロール マスターのソケット ファイルのみを使用して機能します。

$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>

注: ssh -S ~/.ssh/<controlfile> ... も使用できます 同様に、これは上記を少し短くしたものです。

以下は、リモート サーバーへの接続を既に確立している例です:

$ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$

接続を外した状態:

$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$

まだ接続されている場合は、すぐに強制的に終了します:

$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$

私には不明ですが、潜在的に ssh のバグのようです blah にもかかわらず、最後に追加の引数が必要であること 私が使用しているスイッチのコンテキストでは意味がありません。

それがなければ、これが得られます:

$ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [[email protected]]hostname [command]

バージョン情報

OSX
$ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
CentOS 7.x
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

これらのバージョンの両方で、追加の偽の引数が必要であることを確認しました.

参考文献

  • ssh ControlMaster 接続を手動で閉じる (強制終了する) 方法
  • lsof や fuser を使用せずに OpenSSH コントロール マスター プロセスを終了する方法

Linux
  1. CentOS7でSSHを保護するためにFail2banを使用する方法

  2. SSHトンネリングを使用して制限付きサーバーにアクセスする方法

  3. マルチホップSshトンネルでSsh-copy-idを使用する方法は?

  1. SSH接続タイムアウトを増やす方法

  2. ssh接続の速度を確認する方法

  3. SSH 接続を終了するにはどうすればよいですか?

  1. Linuxで応答しないSSH接続を終了する方法は?

  2. リモートX接続(xdmcp対Ssh)でフォントを構成する方法は?

  3. Firefoxに別のAlsaデバイスを使用するように指示する方法は?