OpenSSH não está limpando o soquete do domínio após o término

2

Eu tenho um soquete unix local tunelado para outro soquete unix em uma instância remota sobre SSH:

ssh -N -L $HOME/my.sock:/var/run/another.sock

no entanto, quando eu termino ssh graciosamente (ou seja, ctrl + C ou SIGTERM), o $HOME/my.sock permanece. Parece que isso não é limpo corretamente. Existe uma opção / sinalizador para isso?

Isso é problemático porque, se eu executar o comando pela segunda vez, ele falhará devido ao arquivo de soquete existente. (Não consigo ver um sinalizador / opção de "reutilização" que substitua o arquivo de soquete existente.) E eu prefiro não adicionar um rm -f $HOME/my.sock .

    
por Ahmet Alp Balkan 02.01.2018 / 21:14

1 resposta

3

Resposta curta, você pode controlar isso com um sinalizador de linha de comando: -o 'StreamLocalBindUnlink=yes'

Resposta longa: Veja ssh_config (5):

 StreamLocalBindUnlink
         Specifies whether to remove an existing Unix-domain socket file for local or
         remote port forwarding before creating a new one.  If the socket file already
         exists and StreamLocalBindUnlink is not enabled, ssh will be unable to forward
         the port to the Unix-domain socket file.  This option is only used for port for‐
         warding to a Unix-domain socket file.

         The argument must be yes or no (the default).
    
por 02.01.2018 / 22:02