Como usar o lsof com o SSH ControlPath?

0

Estou usando extensivamente o SSH ControlPath e gostaria de usar a ferramenta lsof para verificar qual processo está mantendo um soquete do ControlPath ativo e em execução. Eu estou usando OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips 1 Mar 2016 que vem com o Ubuntu 16.04. Minhas opções de SSH (em ~ / .ssh / config) são assim:

Host *
...
  ControlMaster auto
  ControlPath /tmp/sshcontrol-%C
  ControlPersist yes
...

E isso é o que recebo quando faço a primeira conexão com um host:

srw------- 1 enzo enzo  0 2016-06-15 11:35:15 sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac

Mas se eu tentar obter detalhes sobre o processo usando esse soquete com lsof , obtenho esses resultados " estranhos ".

    $ lsof /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac
    lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
          Output information may be incomplete.
    $ sudo lsof /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac
    $ lsof | grep sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac
    lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
          Output information may be incomplete.
    ssh       2044            enzo    4u     unix 0x0000000000000000       0t0      42942 /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac.tBKTDPNcaBZjlV2T type=STREAM
    ssh       2044            enzo    5u     unix 0x0000000000000000       0t0      55186 /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac.tBKTDPNcaBZjlV2T type=STREAM
    $ lsof /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac.tBKTDPNcaBZjlV2T
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.
lsof: status error on /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac.tBKTDPNcaBZjlV2T: No such file or directory
lsof 4.89
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-E] [+|-e s] [+|-f[gG]]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
 [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Use the ''-h'' option to get more help information.

Ou seja, o nome do arquivo " real " associado a esse soquete não é o que " deve ser ": lsof relata uma extensão de nome de arquivo extra. A outra ferramenta para soquetes ss fornece resultados semelhantes.

Um último comportamento estranho. Eu vejo que tenho um soquete em /tmp para ser usado por kdewallet . É chamado (no meu caso) kwallet5_enzo.socket . Se eu usar lsof , é isso que eu recebo:

$ lsof /tmp/kwallet5_enzo.socket
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
kwalletd5  1689 enzo    2u  unix 0x0000000000000000      0t0   27355 /tmp/kwallet5_enzo.socket type=STREAM
startkde   1690 enzo   19u  unix 0x0000000000000000      0t0   27802 /tmp/kwallet5_enzo.socket type=STREAM
dbus-laun  1742 enzo   19u  unix 0x0000000000000000      0t0   27802 /tmp/kwallet5_enzo.socket type=STREAM
dbus-daem  1743 enzo   19u  unix 0x0000000000000000      0t0   27802 /tmp/kwallet5_enzo.socket type=STREAM
start_kde  1800 enzo   19u  unix 0x0000000000000000      0t0   27802 /tmp/kwallet5_enzo.socket type=STREAM
kwrapper5  1843 enzo   19u  unix 0x0000000000000000      0t0   27802 /tmp/kwallet5_enzo.socket type=STREAM
ssh        3023 enzo    5u  unix 0x0000000000000000      0t0  104592 /tmp/sshcontrol-e10fedd3d8237e382300367ff49267fa193957ac.sGsWVH3Aqg03Hc7D type=STREAM
ssh        8862 enzo    5u  unix 0x0000000000000000      0t0 1131569 /tmp/sshcontrol-485e2aeac2a50cd6880fd929681d0e3a55817f06.deg4pBWKy2nusvrK type=STREAM
ssh       31767 enzo    5u  unix 0x0000000000000000      0t0 1006327 /tmp/sshcontrol-f1b458a85cd2aa9d5c115abc12afee9f485ad6b0.g2QSMGUDOG1LY8bZ

Eu (corretamente) vejo vários processos acessando esse socket. Mas também vejo três soquetes indesejados relacionados ao recurso ControlPath do SSH! Eu começo a pensar mais sobre insetos e menos sobre minha própria ignorância.

Como posso verificar com confiança qual processo está usando esse arquivo de soquete?

    
por Uqbar 15.06.2016 / 12:14

0 respostas