KiTTY (fork do PuTTY) script que mata um PID específico automaticamente

2

Nova versão

Então, farei uma lista das coisas que tenho para ter mais clareza.

  • PC no Windows 10 executando um servidor de mídia Plex e o Kitty
  • VPS por OVH rodando no Debian 9 stretch

o que eu quero:

  • deseja acessar meu servidor de qualquer lugar fora da rede local

como:

  • usando o vps como um túnel para o meu servidor Plex

Problema:

  • ip dinâmico Duplo Nat do roteador lado isp 4G / LTE com uma assinatura
  • não é possível encaminhamento de porta

problema:

  • quando o ip muda "diariamente" no PC (windows 10) a conexão para o vps através do kitty trava

solução manual para o problema:

  • encontre o PID do processo que mantém a porta aberta e elimine-a

de que preciso:

  • para fazer isso automaticamente ou ter outra solução para o problema

Imagens para ajudar você a entender

Após alteração de ip no log de Kitty

Manual de como resolver o problema

Q & A

Pimp Juice IT : obrigado ^^ de qualquer forma a ferramenta no-ip também me pareceu bastante adequada. Mas desde que o isp tem NAT duplo e que, basicamente, eu teria que executar um No-ip soft em seu segundo "roteador" atrás do meu. Qual é impossível você concordaria ^^. Realmente gosto do meu problema é realmente simples, na verdade, mas chato, porque parece que a saída é simples. Mas não consegue o caminho certo: /

ps: sim, não se preocupe, a versão antiga é um rascunho grande do que eu queria que fosse ^^ no novo, você tem tudo o que precisa para me ajudar, eu acho: / ^^

Old version

I have a VPS from OVH which I use to tunnel my media server on PLEX from my PC to the VPS. All good and working, except…

My IP is dynamic and double NAT-ed. My external IP changes and renews often, at least once a day. Therefore my connection to the VPS through Kitty (a fork of PuTTY) breaks. That I solved with automated reconnection after a connection abort. Anyhow when that is done the port tunneling that I specified in KiTTY would fail, why because the previous connection wasn’t properly closed.

For the server side it's Debian 9 Stretch.

I found the solution which is that I find the PID of the very connection and kill it manually. There is my issue, I would like to automate that with a script. Here I call for your help by hoping anybody could be giving a hand.

Ps: my skills in scripting are as low as it could seem so be as clear as possible thanks.


Answers to some comments

Scott – when my IP address changes it would crash the connection. Right then it would reconnect thanks to KiTTY. I would in the command line just type in netstat -lnp, it would show me all the connection alive. I would find the one linked with the specified port (in this case 32400) and the PID that's associated, then kill the very PID with kill. Last time the PID was 12007 for example.

Kamil Maciorowski – I tried this (referring to this answer to another question):

permanently by editing the /etc/sysctl.conf file, add:

net.ipv4.tcp_keepalive_time=300
     

e

     

If only you can reconfigure sshd on the server, this is in my opinion the most elegant way. Let the sshd_config contain lines like:

ClientAliveCountMax 3
ClientAliveInterval 15
     

mas nenhum deles funciona para mim quando eu simulei uma queda do meu   conexão ele irá se reconectar e o porto ainda estaria ocupado.

     

Além disso, a solução em

     

Back to the client

     

parece que só funciona para mim se eu conseguir me adequar   para minha situação.

     

"but neither of those work for me when I simulated a crash of my connection it will reconnect and the port would still be occupied" – Did you restart sshd? Did you attempt to reconnect right away? With these settings you need to wait up to one minute for the port becoming free. – Kamil Maciorowski

     

sim, reiniciei o SSHD com o seguinte comando:

     

/etc/init.d/ssh restart

     

e por segurança, porque eu não sei que reinicie o sshd

     

service sshd restart

     

a reconexão é automatizada e instantânea agora estou procurando uma maneira de   atrasar este processo, se você sabe como é só me dizer obrigado, então você sabe o   :

     
net.ipv4.tcp_keepalive_time=300
     

eu configurei para 10 seg ao invés de 300 é que ainda está bem.

     

Também não recebi o seu segundo comentário sobre o carregamento de duas sessões   ao mesmo tempo fixando-o com o segundo meu objetivo é apenas reiniciar o   processo de sessão real que é automatizado agora precisa da porta para ser   libertado para que eu possa abri-lo com o novo vínculo.

     

Clarification: in my comment above there is a generic way to prevent locking oneself out of server. If you broke sshd_config severely enough, you wouldn't be able to ssh anew. That's why you should always test it with a new connection, while the old one still allows you to revert changes no matter what. Note in general it's possible to have a syntactically valid sshd_config and still not be able to connect; so restarting sshd without any error doesn't necessarily mean it's going to work. – Kamil Maciorowski

     

Então, no final, quais são minhas soluções para esse processo?   automatizado e a porta a ser liberada após um curto período de tempo e   como atrasar a reconexão no gatinho com um script ou outra coisa   ? mais uma vez obrigado homem pelo seu tempo que eu aprecio

     

"the reconnection is automated and instant I'm now looking for a way to delay this process" – you mean KiTTY tries to reconnect without any delay, right? In Linux on the client side your problem can easily be solved by autossh or looping ssh -o ExitOnForwardFailure=yes … (see this answer). I think ssh under Cygwin should support this option. If you insist on a server-side script, I guess it can be done; but the script must not kill the tunnel if it's not the old tunnel. I have no time now to provide such a cumbersome solution; maybe in 12 hours. – Kamil Maciorowski

     

Ok, obrigado, até as 12h, até lá.   outra solução eu vou deixar você saber como vai graças novamente homem.

    
por argaud bastien 11.03.2018 / 01:36

0 respostas