Dei fleste SSH-keepalive-råd stoppar ved «legg til ServerAliveInterval 30» og lèt dei nyttige delane liggje. Nøkkelordet er ein timer på klientsida som berre slår til når kanalen har vore stille, han tel ubesvarte sondar i staden for sekund, og han bur i ei fil der den første samsvarande verdien vinn. Tek du feil på desse tre eigenskapane, fell ein sunn VPN-økt likevel, medan ei død blir hengjande.

Dei to retningane høyrer til ulike daemonar

ServerAliveInterval blir lesen av ssh-klienten din. ClientAliveInterval blir lesen av sshd på hi sida og sondar den andre vegen, frå tenar til klient. Dei er ikkje alias og samarbeider ikkje, så å setje den eine har inga verknad på åtferda til den andre enden. Å blande dei er den vanlege grunnen til at ei retting ser ut til å verke på ein vert og ikkje på den neste.

Båe godtek null. Ved null sender klienten ingenting i det heile, og på tenarsida slår ein ClientAliveCountMax på null av fråkoplinga som elles ville følgje ubesvarte kontrollar.

Kva ein sonderande prøve beviser, og kva han ikkje gjer

Når intervallet har gått utan at data har kome frå tenaren, sender klienten ein liten førespurnad gjennom den eksisterande krypterte kanalen og ventar på svar. ServerAliveCountMax fastset kor mange av dei som kan bli ståande ubesvarte før økta blir riven ned. Med eit intervall på 60 og eit tal på 3 gir klienten opp etter om lag tre minutt stilla, og det talet er ein eigenskap ved konfigurasjonen din, ikkje ein nettverksstandard. Lèt du intervallet stå på standardverdien 0, blir det aldri send nokon sonde, og difor kan ein vanleg klient sitje på ei død sambinding utan grense.

Sidan utvekslinga går føre seg inne i SSH-transporten, beviser eit svar at SSH-prosessen til motparten framleis les og skriv. Det seier ingenting om programmet du starta inne i den økta: ein databaseklient, ein vidaresend port eller eit langvarig skript kan vere fastlåst medan transporten gladt svarar på sondar.

TCPKeepAlive er ein eigen mekanisme eitt lag lenger nede. Kjernen handsamar han, han er ikkje kryptert, og ein motpart der SSH-daemonen har hengd seg kan framleis oppfylle han. Difor er sonden på SSH-nivå det meir meiningsfulle signalet når du bryr deg om økta og ikkje om sokkelen.

Rekkjefølgja avgjer kva verdi som overlever

OpenSSH nyttar den første verdien han får for kvar parameter, så ei spesifikk Host-blokk må stå før kvar vidare blokk som også ville passe. Legg standardverdiar med jokerteikn nedst i fila, ikkje øvst, og hugs at ei Match-blokk lenger nede ikkje kan overstyre ein verdi som alt er sett. Referansen for OpenSSH-klientkonfigurasjon seier regelen om første verdi direkte, og det er verd å lese han éin gong før du omorganiserer ein delt konfigurasjon.

Kommandolinjeval vinn over fila, noko som gjer eit mellombels eksperiment billeg:

ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=4 office-shell

For å sjå kva klienten faktisk løyste ut i staden for kva du trur du skreiv, be han dumpe den verknadfulle konfigurasjonen. Utdata inneheld dei samanslegne verdiane for det vertsnamnet og er den raskaste måten å fange ei bortkomen tidlegare blokk:

ssh -G office-shell | grep -i alive

Kva keepalives gjer over ein tunnel

Periodisk trafikk hindrar at ei tilstandsfull NAT- eller brannmurssamankopling går ut, noko som er ein reell føremon på ein VPN der gatewayen slepper inaktive straumar etter nokre minutt. Sondar som kjem med 60 sekunds mellomrom fornyar den samankoplinga utan å bere nokon applikasjonsdata.

Dei kan ikkje byggje opp att ein veg som er borte. Når tunnegrensesnittet forsvinn, feilar sondane som alt anna, og økta blir avslutta når talet er brukt opp. Levedyktigheitsdeteksjon og atttoppretting av vegen er ulike problem, og berre det første kan konfigurerast i ssh_config. Det intervallet og talet faktisk kjøper deg, er kor raskt klienten merkar det, og det er den delen ein brukar opplever som ein heng.

Multipleksa sambindingar legg til ein fold. Med ControlMaster i spel høyrer sondane til hovudsambindinga, og ei ny økt over ei eksisterande hovud arvar det den hovudsambindinga forhandla. Viss mux-hovudet er fastlåst, vil opning av eit anna vindauge ikkje teste vegen på nytt.

Stadfeste innstillinga frå ende til annan

På tenaren dumpar du den verknadfulle konfigurasjonen til daemonen i staden for å lese fila og gjette kva include som vann:

sshd -T | grep -i clientalive

Sjå deretter på ei ekte økt med feilsøkingsutdata slått på. Klienten skriv ut ei tidsavbrot-line når talet er brukt opp, og tidsstempla rundt viser om stilla var samanhengande eller om sondane aldri vart sende. Ei økt som døyr utan sondetrafikk har vanlegvis nøkkelordet i ei blokk som aldri samsvarte.

To kontrollar er verd å leggje til for kvar vert du berre når gjennom ein tunnel: stadfest at det oppløyste intervallet er det du meinte, og stadfest at det intervallet multiplisert med talet er kortare enn inaktivitetstidsavbrotet på VPN-gatewayen. Når det andre talet er større, slepper gatewayen straumen stille først, og sonden får aldri sjansen til å rapportere noko.

Relaterte artiklar