Anda cukup menggunakan
ssh -o ControlPath=$socket -O check
untuk setiap $socket yang Anda buka (mudah jika Anda menyimpannya dalam satu direktori).
Ini mengembalikan 255 jika pemeriksaan gagal (koneksi tidak aktif lagi), nilai lain jika lulus. Anda mungkin perlu menentukan nama host juga, tetapi tidak ada yang awk pada $socket tidak akan memberi Anda :)
Jawaban @ Renik tidak berhasil untuk saya. Lihat di bawah untuk mengetahui apa yang terjadi.
Ini berfungsi untuk saya hanya menggunakan file soket untuk master kontrol:
$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>
CATATAN: Anda juga dapat menggunakan ssh -S ~/.ssh/<controlfile> ...
juga, yang merupakan bentuk yang sedikit lebih pendek dari yang di atas.
Contoh
Berikut adalah contoh di mana saya telah membuat koneksi ke server jarak jauh:
$ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$
Dan dengan itu terputus:
$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$
Jika masih terhubung, ini akan memaksanya untuk segera keluar:
$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$
Tidak jelas bagi saya, tetapi tampaknya berpotensi menjadi bug di ssh
bahwa itu membutuhkan argumen tambahan di akhir, meskipun blah
tidak ada artinya dalam konteks sakelar yang saya gunakan.
Tanpanya beri saya ini:
$ 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]
Informasi versi
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
Saya mengonfirmasi bahwa pada kedua versi ini, diperlukan argumen palsu tambahan.
Referensi
- Cara menutup (mematikan) koneksi ssh ControlMaster secara manual
- Bagaimana cara keluar dari proses master kontrol OpenSSH tanpa menggunakan lsof atau fuser?