Qual é a porta de monitoramento padrão para o autossh?

1

O comando autossh tem a seguinte opção -M :

   -M port[:echo_port]

specifies the base monitoring port to use. Without the echo port, this port
and the port immediately above it ( port + 1) should be something nothing else
is using. autossh will send test data on the base monitoring port, and receive
it back on the port above. For example, if you specify "-M 20000", autossh will
set up forwards so that it can send data on port 20000 and receive it back on
20001. 

Como alternativa, você pode especificar o mesmo comportamento usando a variável de ambiente AUTOSSH_PORT .

Minha pergunta é a seguinte:

Se nem a opção -M nem a variável env forem especificadas, qual porta é usada para monitoramento? Ou o comportamento está desativado? A documentação não está clara.

    
por Andrew Eisenberg 01.01.2018 / 19:43

2 respostas

2

If neither the -M option nor the env variable is specified, what port is used for monitoring?

Nos meus vários testes no cliente Kubuntu, as portas altas aleatórias foram usadas em um intervalo de (minha estimativa) 30000-60000 . Compare: porto efêmero . Quero dizer que o primeiro ( port ) foi escolhido aleatoriamente, o segundo foi logo acima dele ( port+1 ).

-M sem um argumento apropriado ( autossh -M -- … ou autossh -M foo … ) sai imediatamente; ele não imprime nenhum erro, mas o status de saída é 1 .

autossh -M 0 … realmente desativa o recurso.

Mas…

Eu tentei analisar a fonte e não encontrei essa aleatoriedade. Então eu descobri isso:

$ type autossh
autossh is /usr/bin/autossh
$ file /usr/bin/autossh
/usr/bin/autossh: POSIX shell script, ASCII text executable
$ head -n 4 /usr/bin/autossh
#!/bin/sh
# little wrapper to choose a random port for autossh, falling back to $fallback_port

fallback_port="21021"
$ tail -n 1 /usr/bin/autossh
exec /usr/lib/autossh/autossh "$@"
$ file /usr/lib/autossh/autossh
/usr/lib/autossh/autossh: ELF 64-bit LSB executable, …

Isso significa que no Kubuntu eu tenho um wrapper que escolhe aleatoriamente uma porta, se não for especificado por -M nor AUTOSSH_PORT . Eu não estou postando o código completo aqui, mas eu li: se o wrapper não pode acertar aleatoriamente um par de portas não utilizadas (ou seja, port e port+1 ) em 42 tentativas, ele finalmente tenta 21021 e 21022 ; se essas portas não puderem ser usadas, o wrapper sairá com um erro.

Se o wrapper for bem-sucedido, ele exportará a primeira porta como AUTOSSH_PORT e executará o% realautossh ( /usr/lib/autossh/autossh ). Este executável requer -M ou AUTOSSH_PORT , caso contrário não será executado.

Minha resposta final é: não há porta de monitoramento padrão para baunilha autossh . Você precisa definir AUTOSSH_PORT ou usar -M . Isso é inconveniente, daí o wrapper. Você pode ou não ter um no seu Linux. É possível que alguns tipos de invólucros do Linux usem e usem uma porta padrão fixa.

    
por 01.01.2018 / 20:55
-1

Pode ser qualquer porta não usada no sistema remoto, mas também deve estar aberta. No entanto, não acho que exista um caso de uso 'sano' para isso, conforme documentado aqui você pode também usar as próprias opções de vida do SSH:

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 5000:localhost:3306 [email protected]

Isso seria "desconectado" após 90 segundos sem resposta do servidor e, em seguida, o AutoSSH se reconectaria automaticamente.

    
por 01.01.2018 / 20:05

Tags