KiTTY (Fork of PuTTY) -Skript, das eine bestimmte PID automatisch abbricht

560
argaud bastien

Neue Version

Also mache ich eine Liste der Dinge, die ich habe, um klarer zu sein.

  • PC unter Windows 10, auf dem ein Plex-Medienserver und Kitty ausgeführt werden
  • VPS von OVH läuft auf Debian 9-Strecke

was ich möchte :

  • Ich möchte von überall aus dem lokalen Netzwerk auf meinen Server zugreifen

Wie :

  • indem Sie die vps als Tunnel zu meinem Plex-Server verwenden

Problem :

  • dynamischer ip Double Nat von isp-seitigem 4G / LTE-Router mit Abonnement
  • Keine Portweiterleitung möglich

Problem :

  • Wenn die ip "täglich" auf dem PC (Windows 10) wechselt, würde die Verbindung zum vps durch kitty abstürzen

Manuelle Lösung des Problems:

  • Finden Sie die PID des Prozesses, der den Port offen hält, und beenden Sie ihn

was ich brauche :

  • das automatisch machen oder eine andere Lösung für das Problem haben

Bilder zum besseren Verständnis

Nach der IP-Änderung im Protokoll von Kitty

Manuelle Lösung des Problems

Q & A

Pimp Juice IT : danke ^^ irgendwie erschien mir das no-ip-tool auch recht passend. Aber da die isp über doppeltes NAT verfügt, müsste ich auf ihrem zweiten "Router" hinter meinem ein No-ip soft laufen lassen. Welches ist unmöglich, würden Sie zustimmen ^^. Wirklich wie meine Ausgabe ist wirklich einfach, in der Tat aber ärgerlich, weil es so scheint, als sei der Ausweg einfach. Kann aber nicht den richtigen Weg finden: /

ps: yeah Keine Sorge, die alte Version ist ein großer Entwurf dessen, was ich wollte, dass es in der neuen Version ist. Sie haben alles, was Sie brauchen, um mir zu helfen, denke ich: / ^^

Old version

Ich habe einen VPS von OVH, mit dem ich meinen Medienserver auf PLEX von meinem PC zum VPS tunneln kann. Alles gut und funktioniert, außer…

Meine IP ist dynamisch und doppelt NAT-ed. Meine externe IP-Adresse ändert sich häufig und wird mindestens einmal täglich erneuert. Daher bricht meine Verbindung zur VPS durch Kitty (eine Gabel von PuTTY). Das habe ich mit automatischer Wiederverbindung nach einem Verbindungsabbruch behoben. Das Port-Tunneln, das ich in KiTTY angegeben habe, würde jedenfalls fehlschlagen, weil die vorherige Verbindung nicht ordnungsgemäß geschlossen wurde.

Für die Serverseite ist es Debian 9 Stretch.

Ich habe die Lösung gefunden: Ich finde die PID der Verbindung und bringe sie manuell ab . Da ist mein Problem, ich würde das gerne mit einem Skript automatisieren. Hier rufe ich um Ihre Hilfe, in der Hoffnung, dass jemand helfen kann.

Ps: Meine Fähigkeiten im Scripting sind so gering, wie es scheint, so klar wie möglich, danke.


Antworten auf einige Kommentare

Scott - Wenn sich meine IP-Adresse ändert, stürzt die Verbindung ab. Genau dann würde es dank KiTTY wieder hergestellt werden. Ich würde in die Kommandozeile einfach eintippennetstat -lnp, es würde mir die ganze Verbindung lebend zeigen. Ich würde den mit dem angegebenen Port (in diesem Fall32400) und der damit verbundenen PID verknüpften finden, und dann den sehrPIDmittötenkill. Letztes Mal war die PID12007zum Beispiel.

Kamil Maciorowski - Ich habe es versucht (unter Bezugnahme auf diese Antwort auf eine andere Frage ):

dauerhaft durch Bearbeiten der /etc/sysctl.confDatei hinzufügen:

net.ipv4.tcp_keepalive_time=300 

und

Wenn Sie nur sshdauf dem Server rekonfigurieren können, ist dies meiner Meinung nach der eleganteste Weg. Lassen Sie die sshd_configZeilen enthalten wie:

ClientAliveCountMax 3 ClientAliveInterval 15 

aber keine davon funktioniert für mich, wenn ich einen Verbindungsabsturz simuliere, wird die Verbindung wiederhergestellt, und der Port ist noch belegt.

Auch die Lösung unter

Zurück zum Kunden

Es scheint, als würde ich nur für mich arbeiten, wenn ich es an meine Situation anpassen könnte.

"Aber keiner von beiden funktioniert für mich, wenn ich einen Absturz meiner Verbindung simuliere. Dadurch wird die Verbindung wiederhergestellt und der Port wäre noch belegt." - Haben Sie sshd neu gestartet? Haben Sie versucht, die Verbindung sofort wieder herzustellen? Mit diesen Einstellungen müssen Sie bis zu einer Minute warten, bis der Port frei wird. - Kamil Maciorowski

Ja, ich habe die SSHD mit dem folgenden Befehl neu gestartet:

/etc/init.d/ssh neu starten

und um sicher zu sein, weil ich nicht weiß, dass sshd neu gestartet wird

Dienst sshd neu starten

Die Wiederverbindung ist automatisiert und sofort. Ich suche jetzt nach einer Möglichkeit, diesen Prozess zu verzögern, wenn Sie wissen, wie es mir danken soll, damit Sie Folgendes wissen:

net.ipv4.tcp_keepalive_time=300 

Ich setze auf 10 sek anstelle von 300 ist das noch in ordnung.

Ich habe auch nicht den zweiten Kommentar zum Laden von zwei Sitzungen erhalten, der mit der zweiten behoben wurde. Mein Ziel ist es, den eigentlichen Sitzungsprozess neu zu starten, der automatisiert ist. Jetzt muss der Port freigegeben werden, damit ich ihn wieder öffnen kann mit der neuen Anleihe.

Klarstellung: In meinem Kommentar oben gibt es eine generische Methode, um zu verhindern, dass man sich vom Server absperrt. Wenn Sie sshd_config stark genug gebrochen haben, können Sie ssh nicht erneut neu starten. Deshalb sollten Sie es immer mit einer neuen Verbindung testen, während Sie mit der alten immer noch Änderungen rückgängig machen können. Beachten Sie im Allgemeinen, dass es möglich ist, eine syntaktisch gültige sshd_config zu haben und trotzdem keine Verbindung herstellen zu können. Ein Neustart von sshd ohne Fehler bedeutet also nicht unbedingt, dass es funktionieren wird. - Kamil Maciorowski

Also am Ende, wie sollen meine Lösungen für diesen Prozess automatisiert und der Port nach kurzer Zeit freigegeben werden und wie kann die Wiederverbindung in kitty mit einem Skript oder etwas anderem verzögert werden? Nochmals vielen Dank für Ihre Zeit, die ich schätze

"Die Wiederverbindung ist automatisiert und sofort suche ich nach einer Möglichkeit, diesen Prozess zu verzögern" - Sie meinen, dass KiTTY versucht, die Verbindung ohne Verzögerung wiederherzustellen, oder? In Linux auf der Clientseite kann Ihr Problem leicht gelöst werden, indem Sie "autossh" oder "loop" von ssh -o ExitOnForwardFailure = yes ... verwenden (siehe diese Antwort). Ich denke, ssh unter Cygwin sollte diese Option unterstützen. Wenn Sie auf einem serverseitigen Skript bestehen, kann dies wohl getan werden. aber das Skript darf den Tunnel nicht beenden, wenn es nicht der alte Tunnel ist. Ich habe jetzt keine Zeit, eine derart umständliche Lösung anzubieten. vielleicht in 12 Stunden. - Kamil Maciorowski

Okay danke ich sehe dich sowieso in 12h bis dann werde ich alle anderen Lösungen ausprobieren Ich werde dich wissen lassen, wie es geht Danke nochmal.

2
Es wäre hilfreich, wenn Sie genau beschreiben würden, wie Sie die PID der Verbindung manuell suchen. Bitte antworten Sie nicht in Kommentaren. Bearbeiten Sie Ihre Frage, um sie klarer und vollständiger zu machen. Scott vor 6 Jahren 0
Sie haben "[Tag: Windows]" getaggt. Ich gehe davon aus, dass es sich sowohl auf die Client- als auch auf die Serverseite bezieht. Die Lösung für Linux-Server "sshd" befindet sich in dieser Antwort (https://superuser.com/a/1283733/432690), einer serverseitigen Story, `ClientAliveCountMax` und` ClientAliveInterval`. Kamil Maciorowski vor 6 Jahren 0
"Aber keiner von beiden funktioniert für mich, wenn ich einen Absturz meiner Verbindung simuliere, wird die Verbindung wieder hergestellt und der Port wäre noch belegt" - Haben Sie `sshd 'neu gestartet? Haben Sie versucht, die Verbindung sofort wieder herzustellen? Mit diesen Einstellungen müssen Sie bis zu einer Minute warten, bis der Port frei wird. Kamil Maciorowski vor 6 Jahren 0
Hinweis zum Neustart von `sshd ': [* Durch den Neustart von sshd bleiben bestehende Sitzungen immer am Leben? *] (Https://superuser.com/q/60407/432690) Um besonders sicher zu sein, halten Sie Ihre ursprüngliche Sitzung am Leben und verbinden Sie sich mit einer anderen Sitzung Übernehmen Sie die Änderungen. Wenn Sie keine Verbindung herstellen können, was bedeutet, dass Sie sich selbst sperren würden, verwenden Sie die erste Sitzung, um das Problem zu beheben. Kamil Maciorowski vor 6 Jahren 0
Klarstellung: In meinem Kommentar oben gibt es eine generische Methode, um zu verhindern, dass man sich vom Server absperrt. Wenn Sie `sshd_config 'stark genug gebrochen haben, können Sie * nicht * erneut ssh *. Deshalb sollten Sie es immer mit einer neuen Verbindung testen, während Sie mit der alten immer noch Änderungen rückgängig machen können. Beachten Sie im Allgemeinen, dass es möglich ist, ein syntaktisch gültiges `sshd_config 'zu haben und trotzdem keine Verbindung herstellen zu können. Ein Neustart von `sshd` ohne Fehler bedeutet nicht zwangsläufig, dass es funktionieren wird. Kamil Maciorowski vor 6 Jahren 0
"Die Wiederverbindung ist automatisiert und sofort suche ich nach einer Möglichkeit, diesen Prozess zu verzögern" - Sie meinen, dass KiTTY versucht, die Verbindung ohne Verzögerung wieder herzustellen, oder? Unter Linux kann das Problem auf Client-Seite durch "autossh" oder durch Schleifen von "ssh -o ExitOnForwardFailure = yes ..." gelöst werden (siehe [diese Antwort] (https://superuser.com/a/1281741/432690)). Ich denke, "ssh" unter Cygwin sollte diese Option unterstützen. Wenn Sie auf einem serverseitigen Skript bestehen, kann dies wohl getan werden. aber das Skript darf den Tunnel nicht beenden, wenn es nicht der alte Tunnel ist. Ich habe jetzt keine Zeit, eine derart umständliche Lösung anzubieten. vielleicht in 12 Stunden. Kamil Maciorowski vor 6 Jahren 0
(1) Die Regel lautet: ein Problem, eine Frage. Ihre letzte Ausgabe führt eine völlig neue Ausgabe ein, es sollte eine separate Frage sein. (2) Ohne Änderungen wäre es eine schreckliche Frage. [XY-Problem] (https://meta.stackexchange.com/q/66377/355310)? Sie sollten angeben, was Sie über welchen Tunnel erreichen möchten. Ein HTTP-Server kann beispielsweise mehrere Standorte auf einer einzigen IP-Adresse und einem einzigen Port hosten. Welche Website Sie erhalten, hängt von der verwendeten URL ab. Nicht erkannte URL wird abgelehnt. (3) Bitte bauen Sie alle Sätze mit Interpunktion zusammen. Ich bin es leid, diese Wortströme, die Sie verwenden, in gültige Sätze aufzuteilen. Kamil Maciorowski vor 6 Jahren 0
Dieser Thread von Kommentaren ist "* unique *" !!! Löwen und Tiger und eindeutige Kommentarthreads in Antworten; Oh mein!! Pimp Juice IT vor 6 Jahren 0
Willkommen bei SuperUser, ich bin froh zu sehen, dass Sie so viel Übung in der Bearbeitung von Fragen bekommen und ich kann diese Anstrengung sicherlich schätzen. Im Ernst, ohne darüber nachzudenken, klingt dies nach etwas wie https://www.noip.com/login und der Verwendung von [Dynamic DNS] (https://en.wikipedia.org/wiki/Dynamic_DNS) könnte funktionieren Lösung für das sich ändernde Problem der öffentlichen IP-Adresse des ISP ... https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/ Pimp Juice IT vor 6 Jahren 0
Ich interessierte mich nicht für das Lesen der alten Version, da es für mich alt ist, dass es "irrelevant" klingelt und somit keine Notwendigkeit besteht, darin zu graben. Pimp Juice IT vor 6 Jahren 0

0 Antworten auf die Frage