Lielākā daļa padomu, kā uzturēt SSH sesiju dzīvu, apstājas pie «pievienojiet ServerAliveInterval 30» un atstāj novārtā lietderīgās daļas. Atslēgvārds ir klienta puses taimeris, kas ieslēdzas tikai tad, kad kanāls ir klusējis, tas skaita neatbildētos zondus, nevis sekundes, un tas dzīvo failā, kurā uzvar pirmā atbilstošā vērtība. Kļūdieties šajās trīs īpašībās, un vesela VPN sesija tomēr pārtrūks, bet mirusī paliks karājoties.

Abi virzieni pieder dažādiem dēmoniem

ServerAliveInterval lasa jūsu ssh klients. ClientAliveInterval lasa pretējās puses sshd, un tas zondu sūta pretējā virzienā, no servera uz klientu. Tie nav sinonīmi un nesadarbojas, tāpēc viena iestatīšana neietekmē otras puses uzvedību. To sajaukšana ir ierastais iemesls, kāpēc labojums šķiet strādājam vienā saimniekā un ne nākamajā.

Abi pieņem nulli. Pie nulles klients nesūta neko, un servera pusē nulles ClientAliveCountMax izslēdz atvienošanu, kas citādi sekotu neatbildētām pārbaudēm.

Ko zonde pierāda un ko ne

Kad noteiktais intervāls pagājis, bet no servera nav pienākuši dati, klients pa esošo šifrēto kanālu nosūta nelielu pieprasījumu un gaida atbildi. ServerAliveCountMax nosaka, cik no tiem drīkst palikt neatbildēti, pirms sesija tiek pārtraukta. Ar intervālu 60 un skaitu 3 klients padodas pēc aptuveni trīs minūšu klusuma, un šis skaitlis ir jūsu konfigurācijas īpašība, nevis tīkla standarts. Atstājiet intervālu noklusējuma vērtībā 0, un zonde netiks nosūtīta nekad, tāpēc standarta klients var bezgalīgi sēdēt uz miruša savienojuma.

Tā kā apmaiņa notiek SSH transporta iekšienē, atbilde pierāda, ka pretējās puses SSH process joprojām lasa un raksta. Par programmu, ko palaidāt šajā sesijā, tā neko nepasaka: datubāzes klients, pāradresēta osta vai ilgstoši strādājoša skripta var būt iesprūdusi, kamēr transports priecīgi atbild uz zondēm.

TCPKeepAlive ir atsevišķs mehānisms vienu slāni zemāk. To apstrādā kodols, tas nav šifrēts, un pretējā puse, kuras SSH dēmons ir iesprūdis, to tomēr var apmierināt. Tāpēc SSH līmeņa zonde ir jēgpilnāks signāls, ja jums svarīga ir sesija, nevis ligzda.

Secība izlemj, kura vērtība izdzīvo

OpenSSH piemēro pirmo iegūto vērtību katram parametram, tāpēc konkrētam Host blokam jābūt pirms jebkura plašāka bloka, kas arī atbilstu. Noklusējuma vērtības ar aizstājējzīmēm lieciet faila apakšā, nevis augšā, un atcerieties, ka zemāk esošais Match bloks nevar atcelt jau iestatītu vērtību. OpenSSH klienta konfigurācijas uzziņa tieši norāda pirmās vērtības likumu, un to ir vērts vienreiz izlasīt pirms koplietotas konfigurācijas pārkārtošanas.

Komandrindas opcijas uzvar failu, kas padara pagaidu eksperimentu lētu:

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

Lai redzētu, ko klients patiešām atrisināja, nevis to, ko domājat esam ierakstījis, lūdziet tam izdrukāt spēkā esošo konfigurāciju. Izvadā ir apvienotās vērtības šim saimnieka vārdam, un tas ir ātrākais veids, kā noķert nomaldījušos iepriekšējo bloku:

ssh -G office-shell | grep -i alive

Ko keepalive dara tunelī

Periodiska satiksme neļauj beigties stāvokli saglabājoša NAT vai ugunsmūra kartējumam, kas ir reāls ieguvums VPN, kura vārteja pēc dažām minūtēm atmet neaktīvas plūsmas. Zondes, kas pienāk ik pēc 60 sekundēm, atsvaidzina šo kartējumu, nepārvadājot nekādus lietojumprogrammas datus.

Tās nevar atjaunot ceļu, kas ir pazudis. Kad tuneļa saskarne pazūd, zondes cieš neveiksmi kā viss pārējais, un sesija beidzas, tiklīdz skaits ir izsmelts. Dzīvības noteikšana un ceļa atjaunošana ir dažādas problēmas, un tikai pirmo var konfigurēt ssh_config failā. Tas, ko intervāls un skaits patiešām nopērk, ir tas, cik ātri klients to pamana, un tieši to lietotājs izjūt kā iekāršanos.

Multipleksēti savienojumi pievieno krokšķi. Kad spēlē ir ControlMaster, zondes pieder galvenajam savienojumam, un jauna sesija pa esošo galveno manto to, par ko šis galvenais vienojās. Ja mux galvenais ir iesprūdis, cita loga atvēršana ceļu no jauna nepārbaudīs.

Iestatījuma pārbaude no sākuma līdz beigām

Serverī izdrukājiet spēkā esošo dēmona konfigurāciju, nevis lasiet failu un miniet, kurš include uzvarēja:

sshd -T | grep -i clientalive

Pēc tam vērojiet īstu sesiju ar ieslēgtu atkļūdošanas izvadi. Kad skaits ir izsmelts, klients izdrukā taimauta rindu, un laika zīmogi ap to parāda, vai klusums bija nepārtraukts vai zondes nemaz netika sūtītas. Sesija, kas mirst bez jebkādas zondes satiksmes, parasti glabā atslēgvārdu blokā, kas nekad neatbilda.

Ir vērts pievienot divas pārbaudes jebkuram saimniekam, kam piekļūstat tikai pa tuneli: pārliecinieties, ka atrisinātais intervāls ir tas, ko bijāt iecerējis, un ka šis intervāls, reizināts ar skaitu, ir īsāks par dīkstāves taimautu VPN vārtejā. Kad otrais skaitlis ir lielāks, vārteja vispirms klusi atmet plūsmu, un SSH zondei nekad nav izdevības kaut ko ziņot.

Saistītie raksti