Hur man avslutar en SSH-session som inte svarar på Linux
Du kanske håller på att skriva i en SSH-session på distans och plötsligt händer ingenting. Systemet verkar inte reagera på dina tangenttryckningar. Vad gör du då?
Att en SSH-session stannar upp eller inte svarar kan bero på olika faktorer, t.ex. nätverksavbrott, överbelastning av servern eller programfel. För att avsluta en session som inte svarar kan man använda flera metoder, t.ex. att avsluta anslutningen med kommandot “kill” i ett terminalfönster eller genom att stänga alla anslutningar via det program som initierade SSH-sessionen. I vissa fall kan det vara en mer effektiv lösning att byta till ett alternativt protokoll som Mosh, som ger bättre prestanda med sina beständiga tunnlar och inbyggda skalintegrering.
Vad får SSH-sessioner att frysa?
En av de främsta anledningarna till att SSH-sessioner inte svarar är att nätverksanslutningen försvinner på grund av försvagade Wi-Fi-signaler eller en oavsiktlig avstängning av fjärrenheten. Sådana händelser är särskilt vanliga bland användare som använder bärbara datorer, eftersom de kan glömma att ta hänsyn till den pågående sessionen när de stänger locket på sin bärbara dator eller inte lyckas upprätthålla en stabil internetanslutning.
SSH, som står för Secure Shell, utformades ursprungligen under en tid då individer inte vanligtvis använde bärbara datorer som sitt primära sätt att få tillgång till nätverksresurser. SSH:s design och funktionalitet skräddarsyddes för att fungera optimalt i en miljö där anslutningar upprättades via fysiska kablar snarare än trådlösa överföringar. Därför anses det generellt vara mer effektivt att använda med trådbundna nätverk jämfört med trådlösa.
Avsluta med en Escape-sekvens
Om din Secure Shell-anslutning (SSH) inte svarar eller fryser är en lämplig åtgärd att använda en Escape-sekvens. Åtgärder som utförs via escape-sekvenser möjliggör kommunikation med SSH-klienten i stället för med den avlägsna värdenheten. Standardtecknet för escape i OpenSSH-klienten är tildesymbolen (~), som föregår varje given escape-sekvens.
För att avsluta Secure Shell (SSH)-klienten kan man använda tildesymbolen följt av en punkt (punktum), som vanligtvis finns på samma tangentbordsrad som tildesymbolen.
Alternativt kan man välja att modifiera escape-tecknet enligt egna önskemål. Det gör man genom att använda alternativet “-e” när kommandot körs. Alternativt kan denna ändring göras permanent genom att justera parametern “EscapeChar” i filen “.ssh/config” som finns i ens hemkatalog på värdsystemet.
Använda kommandot kill
Om det inte går att använda en escape-sekvens kan man försöka avsluta SSH-klienten genom att identifiera dess processidentifierare (PID). Detta kan göras genom att skicka utdata från kommandot “ps” genom en sökning med “grep”:
ps aux | grep ssh
Parametern “aux” i kommandot för visning av processer (“ps”) innebär att alla processer som körs på systemet ska listas, oavsett ägare eller om de har en associerad terminal eller inte.
När flera instanser av en SSH-anslutning (Secure Shell) hanteras kan det vara svårt att identifiera den aktiva sessionen på grund av bristen på visuella indikatorer. Genom att granska loggfilen, som visar information som användarnamn och IP-adresser som är associerade med varje session, är det dock möjligt att lokalisera den aktuella instansen. Om du vill koppla bort en inaktiv session utför du kommandot “kill” följt av process-ID (PID) för den önskade avslutningen.
kill [PID]
Använd Mosh för bättre SSH-anslutningar!
Ett bättre sätt att undvika irriterande frusna SSH-sessioner är att använda Mosh . Om anslutningen bryts kommer Mosh att låta dig fortsätta vara ansluten. Den skickar alla meddelanden när du återansluter. Den fungerar även när du försätter din maskin i viloläge.
När du använder en terminal multiplexer som GNU Screen eller tmux, har du möjlighet att upprätthålla och därefter återuppta dina SSH-sessioner i händelse av avbrott, vilket ger sömlös anslutning. Men när de kombineras med Mosh blir deras funktioner ännu bättre, vilket resulterar i en optimerad användarupplevelse.
För att installera Mosh på Debian och Ubuntu:
sudo apt install mosh
Och på Arch Linux:
sudo pacman -S mosh
På Red Hat-familjen av distributionssystem:
sudo dnf install mosh
Nu kan du bli av med SSH-sessioner som fastnat
Mosh erbjuder en effektivare lösning för att upprätthålla en aktiv SSH-session jämfört med traditionella metoder som att använda escape-sekvenser eller använda kommandot “kill”. Verktyget ger kontinuerlig anslutning trots avbrott, t.ex. avbrutna anslutningar eller perioder av inaktivitet, och eliminerar därmed behovet av upprepade autentiseringsprocesser som ofta förknippas med SSH-sessioner som inte svarar.