Ssh ControlMaster bağlantıları elle nasıl kapatılır (öldürülür)


63

Aşağıdaki .ssh/configyapılandırma ile:

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h

4 saatten önce devam eden bağlantı nasıl kapatılır?

Yeni bağlantılar kurabileceğinizi biliyorum, ama hepsini nasıl kapatabilirsiniz?

Belki de tüm kalıcı bağlantıları göstermenin ve ayrı ayrı ele almanın bir yolu vardır, ancak bulamıyorum.


4
Öldürmemek, ancak kalıcı bağlantıyı kullanarak kullanamazsınızssh -S none (belki bu zaten size yardımcı olur).
sr_

Hayır Bir kullanıcıyı uzak bir sunucudan kaldırmaya çalışıyorum, ancak asılı bağlantılar bunu yapmamı engelliyor.
Paolo

Yanıtlar:


81

Gönderen kılavuzda :

-O ctl_cmd
Aktif bir bağlantı çoklama ana işlemini kontrol edin. Ne zaman -Oseçeneği belirtilmişse, ctl_cmdargüman yorumlanır ve master süreci geçirilir. Geçerli komutlar şunlardır: check (ana işlemin çalıştığını kontrol edin), forward(komut yürütme işlemi olmadan yönlendirme iste), cancel(iletimleri iptal et), exit(master'dan çıkmasını stop isteyin ) ve (master'dan başka çoklama isteklerini kabul etmesini durdurmasını isteyin).

Eski versiyonlarda sadece checkve var exitama bu sizin amacınız için yeterli.

ssh -O check host.example.com

Tek bir tıklamayla tüm bağlantıları (yalnızca belirli bir ana bilgisayarla bağlantıyı değil) silmek istiyorsanız, o zaman fuser /tmp/ssh_mux_*ya lsof /tmp/ssh_mux_*da her soketi kontrol eden ssh istemcilerini listeleyiniz. fuser -HUP -k tmp/ssh_mux_*Hepsini temiz bir şekilde öldürmek için kullanın (SIGHUP'ı kullanarak sinyal, müşterilerin soketlerini doğru bir şekilde çıkardıklarından en iyisidir).


Bu mükemmel bir cevap. Bu mükemmel Ben başarmak çalıştığım şey için. checkaradığımdan daha da faydalı, bu exitzaten ne ! : D
ELLIOTTCABLE

5
OS X’te fusersinyal gönderemez, ancak bu aynı zamanda çalışır:lsof -Fp /tmp/ssh_mux_* | cut -c 2- | xargs kill -HUP
Ori

11

cmcControlMaster oturumlarını yönetmek için açık kaynak kodlu bir yardımcı program yazdım : ClockworkNet / cmc :

Usage:  cmc [ -c HOST | -o HOST | -x HOST ]
        cmc [ -L | -l | -O | -X ]
        cmc -h

ControlMaster Controller - Eases management of SSH ControlMaster connections

Options:
    -h      show this help message and exit
    -c HOST check HOST ControlMaster connection status (maybe specified more
            than once)
    -L      list ControlMasters defined in SSH_CONFIG
    -l      list ControlMaster connection sockets in ~/.ssh/ and check their
            connection status
    -O      open all ControlMasters defined in SSH_CONFIG
    -o HOST open a ControlMaster session (maybe specified more than once)
    -x HOST close ControlMaster session (maybe specified more than once)
    -X      exit all ControlMaster connections with sockets in ~/.ssh/

Notes:
    * Any unopened sockets in ~/.ssh/ are removed with -l and -X

3

Koşabilir fuser /tmp/ssh_mux_blablabla(ihtiyaç duyabilir sudo) ve döndürdüğü PID'i öldürebilirsiniz. fuserhangi işlemlerin bir dosya kullandığını gösterir. (Ve dahası, kontrol edin man fuser.)

Güncelleme: Gilles'nun cevabını kontrol edin; çok daha ayrıntılı.


3

Bu benim için sadece kontrol ana için soket dosyasını kullanarak çalışır:

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

Örnek

Uzak bir sunucuya zaten bağlantı kurduğum bir örnek:

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

Ve bununla bağlantısı kesildi:

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

Eğer hala bağlı olsaydı, bu derhal çıkmaya zorlardı:

$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$

Bana göre belirsiz, ancak kullandığım anahtarların bağlamında anlamsız ssh olsa da blah, sonunda ek bir tartışma gerektirdiği için potansiyel olarak bir hata olduğu görülüyor .

Bu olmadan bana şunu verir:

$ ssh -o ControlPath=~/.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]] [user@]hostname [command]

Sürüm bilgisi

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

Bu versiyonların her ikisinde de, sahte sahte argümana ihtiyaç duyulduğunu doğruladım.

Referanslar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.