GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengetahui apakah koneksi ssh ControlMaster sedang digunakan

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?

Linux
  1. Cara Menggunakan Fail2ban untuk Mengamankan SSH di CentOS 7

  2. Cara Menggunakan Tunneling SSH untuk Mengakses Server yang Dibatasi

  3. Bagaimana Mengkonfigurasi Font Pada Koneksi X Jarak Jauh (xdmcp Vs. Ssh)?

  1. Bagaimana cara meningkatkan batas waktu Koneksi SSH

  2. Bagaimana cara memeriksa kecepatan koneksi ssh Anda

  3. Bagaimana Memberitahu Firefox Untuk Menggunakan Perangkat Alsa Lain?

  1. Bagaimana cara mengakhiri koneksi SSH yang tidak responsif di linux?

  2. Bagaimana Cara Menggunakan Ssh-copy-id Dengan Multiple-hop Ssh Tunnel?

  3. Bagaimana saya bisa menggunakan SSH dengan proxy SOCKS 5?