O que você quer dizer com túnel "reverso"?
O parâmetro -R refere-se a um túnel iniciado remotamente, em vez do parâmetro -L que se refere a um túnel iniciado localmente.
Portanto, da perspectiva do cliente SSH, o parâmetro -R escutará o tráfego no terminal remoto (o que significa o servidor SSH). Quando o computador que executa o servidor SSH recebe tráfego na porta especificada (1122), esse computador envia essa informação através do software SSH. Especificamente, enviará essa informação através do túnel SSH. Conforme as informações são enviadas pelo túnel SSH, elas são criptografadas como todo o tráfego SSH. Além disso, uma pequena nota é adicionada a essa informação, que é (parafraseada aqui para dizer) "enviar o tráfego para a porta localhost 5000".
Quando o tráfego na outra extremidade do túnel SSH (neste exemplo, estamos falando agora do computador que executa o cliente SSH) recebe o tráfego, ele vê a nota sobre onde o tráfego irá. Então, esse computador alcança a porta 5000 localhost. Esse é o momento em que o nome do host "localhost" é resolvido. Portanto, neste exemplo, o "localhost" se referirá ao cliente SSH. (Em contraste, se você usou -L em vez disso, usando "localhost" como esse ainda seria interpretado pelo tráfego de recebimento final sobre o túnel, então a frase "localhost" seria interpretada pelo servidor SSH.)
Agora, sua melhor aposta é descobrir por que o túnel continua em colapso. Eu tenho usado normalmente túneis -L (locais), mas eu os ignorei por muitos dias antes (às vezes) decidindo usar um, e funciona muito bem. Eu presumo que o túnel possa ser desmoronado por qualquer um dos lados. Verifique os dois lados para os logs. Você pode querer verificar a documentação do OpenSSH para ver se existe algum tipo de timeout com o qual você está lidando.
Se você quiser ir a rota incompreensível de contornar o problema (ao invés de consertá-lo), matando o sshd e reiniciando, você pode fazer isso. Como observado, você não quer usar killall sshd
porque pode haver outra conexão sshd. Você poderia tentar o pkill
para eliminar qualquer programa que se conecta ao 203.0.113.10 (ou é 10.34.23.12?) Ou o número da porta (1122), mas, novamente, isso poderia levar a alguns falsos positivos. Você tem uma maneira mais segura de contornar o problema; Envolve até mesmo a mesma proposta de reiniciar o servidor.
Você poderia ter o sshd usando um arquivo de configuração personalizado ( -f configuration file
), ou você pode especificar informações de configuração na linha de comando (usando -o
). por exemplo:
sshd -o PidFile /var/run/sshd-remPC-tunnel.pid
(Além disso, você incluiria suas outras opções desejadas nessa linha de comando).
Isso coloca o número de identificação do processo nesse arquivo quando você inicia o sshd. Então você pode:
kill $( cat /var/run/sshd-remPC-tunnel.pid )
(Nota: Você pode precisar de permissão. Eu estou muito intencionalmente não me importando com isso, para manter minha resposta simples. Certifique-se de que sshd
possa criar o arquivo, e você pode com sucesso cat
quando você deseja kill
it. Execute testes e faça as alterações necessárias.)
Nota: Você provavelmente NÃO quer apenas reiniciar automaticamente o túnel a cada 5 minutos (para automatizar a correção do problema). Porque, se você tiver uma conexão bem-sucedida, isso interromperá a conexão bem-sucedida. Então, imagino que isso seria algo planejado para ser feito manualmente.