GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, zda se používá připojení ssh ControlMaster

Můžete jednoduše použít

ssh -o ControlPath=$socket -O check 

za každý $socket, který jste otevřeli (snadné, pokud je budete mít v jednom adresáři).

Toto vrátí 255, pokud kontrola selže (připojení již není aktivní), jinou hodnotu, pokud projde. Možná budete muset zadat také název hostitele, ale nic, co vám awk na $socket nedá :)


Odpověď @Renika pro mě nefungovala. Co udělal, viz níže.

Funguje to pro mě pouze s použitím souboru soketu pro řídicí master:

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

POZNÁMKA: Můžete také použít ssh -S ~/.ssh/<controlfile> ... také, což je trochu kratší forma výše uvedeného.

Příklad

Zde je příklad, kdy jsem již navázal připojení ke vzdálenému serveru:

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

A s odpojeným:

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

Pokud by byl stále připojen, bylo by to nuceno jej okamžitě ukončit:

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

Není mi to jasné, ale zdá se, že to může být chyba v ssh že vyžaduje další argument na konci, i když blah je v kontextu přepínačů, které používám, bezvýznamné.

Bez toho mi dává toto:

$ 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]

Informace o verzi

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

Potvrdil jsem, že na obou těchto verzích byla potřeba další falešný argument.

Odkazy

  • Jak ručně ukončit (ukončit) připojení ssh ControlMaster
  • Jak ukončit hlavní proces ovládání OpenSSH bez použití lsof nebo fixační jednotky?

Linux
  1. Jak používat tunelování SSH pro přístup k omezeným serverům

  2. Jak zvýšit časový limit připojení SSH

  3. Jak zkontrolovat rychlost vašeho ssh připojení

  1. Jak nakonfigurovat písma na vzdáleném připojení X (xdmcp vs. Ssh)?

  2. Jak říct Firefoxu, aby používal jiné zařízení Alsa?

  3. Jak spolehlivě udržet otevřený tunel SSH?

  1. Jak používat Fail2ban k zabezpečení SSH na CentOS 7

  2. Jak ukončit nereagující připojení SSH v linuxu?

  3. Jak používat Ssh-copy-id s Multiple-hop Ssh tunelem?