Wenn ich über ssh eine Verbindung zu einem Computer herstelle, kann ich die Kombination "Strg + C" nicht verwenden, da sie ein Kill-Signal an die Sitzung sendet.
Als Beispiel starte ich eine SSH-Sitzung zum Clientcomputer vom Hauptcomputer aus, führe auf dem Client den Befehl "top" aus, und wenn ich "top" beenden möchte, verwende ich die Kombination "Strg + C" und die SSH-Sitzung wird geschlossen. Die Ausgabe dieses Prozesses lautet wie folgt:
[root@client ~]# top //I use Ctrl + C to exit from top
[root@main ~]# Killed by signal 2.
"ssh -vvv" Ausgabe:
Last login: Tue Feb 13 14:08:57 2018 from main.company.intra
[root@client ~]# debug3: send packet: type 1
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cc -1)
Killed by signal 2.
[root@main ~]#
Wenn ich MobaXterm für ssh ausprobiere, gibt es kein Problem. Das Problem betrifft also nicht die Serverkonfiguration, sondern die PuTTy-Konfiguration.
Ich denke, während ich MobaXterm benutze, wurde die Tastenkombination Strg + C an den Client-Server gesendet, während mit PuTTy das Interrupt-Signal an den Hauptserver gesendet wurde (also der SSH-Verbindungsprozess). Ich denke schon, wenn wir diese Route reparieren, ist das Problem gelöst.
Q
oderq
oben stehst, verlässt du es. Hast du es versucht ?Antworten:
Ctrl+ Csoll normalerweise ein Interrupt-Signal senden . Das Interruptsignal ist Signal 2. Es tut also, was beabsichtigt war.
Diese Meldung wird normalerweise nicht angezeigt, ist aber ganz richtig. Der Prozess beendet , da es ein Signal 2, das empfangene Unterbrechungssignal erzeugt wird durch +
SIGINT
CtrlCLassen Sie uns zuerst sehen, welche Tastenkombination dem Interrupt-Signal entspricht
Überprüfen wir nun den numerischen Wert des Interruptsignals
Beachten Sie, dass das KILL-Signal das Signal 9 (nicht 2) ist. Sie können jedes dieser Signale mit dem
kill
Befehl senden, aber nur eines davon ist ein KILL-Signal und es ist kein Signal 2.Es bleibt also die Frage, was diese Nachricht "Getötet durch Signal 2" erzeugt.
Wenn wir uns https://stackoverflow.com/questions/3165511/how-to-make-terminal-not-print-killed-by-signal-2-on-catching-a-sigint anschauen , sehen wir, dass diese Nachricht erzeugt werden kann Wenn Sie über ein Skript verfügen, mit
trap SIGINT
dem Signale abgefangen und spezielle Aktionen ausgeführt werden.Vielleicht haben Sie einen
top
Alias oder eintop
Skript früher$PATH
als/usr/bin
?Sie schlagen vor, dass eine SSH-Sitzung von * nix Computer
main
zu * nix Computer beendetclient
wird. Sie werden an einer * nix-Shell-Eingabeaufforderung weitergeleitet.Aus Ihrer Erwähnung von MobaXterm als Alternative zu PuTTY schließe ich, dass Sie die Windows-Version von PuTTY verwenden, nicht die * nix-Version von PuTTY. Wenn ja, ist nicht klar, warum Ihre SSH-Verbindung aus zwei Teilen besteht (Win-PC -> "main" -> "client").
Wenn Sie PuTTY verwenden, um sich bei main anzumelden, und sich dann bei
ssh
client anzumelden, ist es nicht besonders überraschend, dass PuTTYs ^ C von main behandelt und nicht an client für übergeben wirdtop
.Wir können auf https://unix.stackexchange.com/questions/102061/ctrl-c-handling-in-ssh-session verweisen, in dem dieses Thema behandelt wird.
Ich vermute also, dass Ihre PuTTY-Sitzung anders konfiguriert ist als Ihre MobaXterm-Sitzung und dass einige Dinge im Gange sind, von denen Sie (und daher auch wir) nichts wissen.
PuTTY sendet kein Signal, sondern ein ASCII-Steuerzeichen. Dies ist leicht zu beweisen. Wir bitten die Shell nur, das ASCII-Steuerzeichen 0x03 (ETX, Strg + C) von der Shell nicht speziell zu behandeln und dann zu prüfen, was PuTTY sendet:
Siehe http://tldp.org/LDP/abs/html/exitcodes.html 130 = 128 + 2 = Signal 2. In diesem Fall habe ich ^ A verwendet, um 0x01 an die Shell zu senden, die Signal 2 an den
top
Prozess gesendet hat. ^ C hat gerade 0x03 gesendet, wascat-V
als ^ C angezeigt wird .Ich würde also NICHT versuchen herauszufinden, warum Putty SIGINTR "sendet", wenn mobaXterm dies nicht tut. Keiner von ihnen tut das. Sie senden nur ein ASCII-Steuerzeichen.
Schauen Sie sich an, wie Sie PuTTY aufrufen. Klicken Sie dazu auf ein Desktopsymbol. Verfügt dieses Symbol über Eigenschaften (Alt + Eingabetaste) mit zusätzlichen Parametern in Target? usw. usw.
quelle
ssh client top
aus irgendeinem Grund ausgeführt wird?