Как да поддържате SSH сесията жива

Сподели

Изживейте безпроблемни SSH сесии. Следвайте нашето ръководство, за да поддържате връзките си живи и да премахнете проблемите със замръзването.

При отдалеченото управление на сървъра и защитения трансфер на данни, SSH (Secure Shell) е незаменим инструмент. Въпреки това, удобството и сигурността му понякога могат да бъдат помрачени от често срещано разочарование: замразени SSH сесии.

Освен това внезапното прекъсване на сесия може да доведе до загуба на работа, забавени проекти и чувство на безпомощност.

Но не се страхувайте, защото има решение под ръка. Това изчерпателно ръководство разкрива тайните за поддържане на активни и отзивчиви SSH връзки, осигурявайки безпроблемно изживяване, лишено от проблеми със замръзване.

Така че, кажете сбогом на разочарованието и здравейте на ефективните, непрекъснати SSH сесии. Но преди да продължим напред, нека отговорим на един важен въпрос.

Защо SSH затваря връзката?

Краткият отговор е, че всичко се свежда до изчакване на TCP. Времето за изчакване на TCP се отнася до продължителността, през която TCP връзка или мрежова операция чака отговор, преди да се приеме, че процесът е неуспешен.

В Linux настройките за изчакване на TCP определят колко време трябва да изчака TCP връзка или операция, преди да приеме, че даден пакет е загубен или връзката е престанала да реагира.

Този механизъм е от решаващо значение за гарантиране, че мрежовата комуникация е надеждна и ефективна.

В случай на поддържане на SSH връзката жива, има три ключови системни параметъра, които ще обсъдим накратко по-долу.

  • tcp_keepalive_time: определя интервала между изпращането на TCP сонди за поддържане на активност при неактивна TCP връзка. Keepalive сондите проверяват дали отдалеченият партньор все още е жив и реагира, дори когато не се прехвърлят данни.
  • tcp_keepalive_probes: малък пакет, изпратен от TCP крайна точка за проверка на изправността и отзивчивостта на отдалечената крайна точка в неактивна връзка. Той открива дали отдалечената крайна точка е станала недостъпна или връзката е била загубена поради мрежови проблеми.
  • tcp_keepalive_intvl: контролира интервала между изпращането на сонди за поддържане на активност при неактивна TCP връзка.

Всяка стойност е за секунди и може лесно да се провери с командите по-долу.

cat /proc/sys/net/ipv4/tcp_keepalive_time
cat /proc/sys/net/ipv4/tcp_keepalive_probes
cat /proc/sys/net/ipv4/tcp_keepalive_intvl
Проверка на стойностите за поддържане на активност в Linux.
Проверка на стойностите за поддържане на активност в Linux.

Какво означава всичко това? Времето за поддържане на активност е 7200 секунди или 120 минути (2 часа). Това обаче не означава, че вашата SSH сесия ще бъде поддържана жива в продължение на 2 часа, тъй като следните два параметъра са от решаващо значение.

Настройките по подразбиране на системата изпращат девет проби на интервали от 75 секунди, общо 675 секунди, след което сесията се счита за неуспешна и затворена.

С други думи, след малко повече от 11 минути вашата SSH сесия ще бъде прекратена при неактивност – т.е. ако не въведете нещо в терминала.

Разбира се, можете да коригирате тези настройки, но това не е правилният начин. SSH предлага своя механизъм за поддържане на сесии живи, който ще ви покажем по-долу.

Как да поддържате SSH сесията жива

Поддържането на SSH сесия жива е процес, който включва конфигурация както от страна на клиента, така и от страна на сървъра.

Конфигурация от страна на клиента (Linux)

От страна на клиента, вашата Linux настолна система, създайте файл във вашата домашна директория (ако все още не съществува) “~/.ssh/config.”

touch ~/.ssh/config

Ако обаче „~/.ssh” не съществува, трябва да я създадете, след което да зададете съответните разрешения.

mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Host *
ServerAliveInterval 120
ServerAliveCountMax 30

Ето какво означава всяка опция:

  • Домакин: Посочените конфигурации се отнасят само за хостовете, изброени след „Домакин” ключова дума. Тъй като използвахме заместващ знак
  • те се отнасят за всички хостове.ServerAliveInterval
  • : Задава интервал на изчакване в секунди, след който, ако не са получени данни от сървъра, SSH ще изпрати съобщение през шифрования канал, за да поиска отговор от сървъра. По подразбиране е 0, което показва, че тези съобщения няма да бъдат изпратени до сървъра.ServerAliveCountMax

: Задава броя на активните съобщения на сървъра, които могат да бъдат изпратени без SSH да получава никакви съобщения обратно от сървъра. Ако този праг бъде достигнат, докато се изпращат съобщения за активен сървър, SSH ще прекъсне връзката със сървъра, прекратявайки сесията. Стойността по подразбиране е 3.

С други думи, клиентът ще изпраща съобщение за поддържане на активността до сървъра на всеки 120 секунди (2 минути), 30 пъти. 120 * 30 = 3600 секунди или един час. Това е общото време, за което, дори и без активност, нашата SSH сесия ще бъде поддържана жива.

Конфигурация от страна на клиента (Windows)За да поддържат своята SSH сесия жива, потребителите на Windows, използващи PuTTY за отдалечен достъп през SSH, трябва да зададат „Секунди между поддържащи активности” опция в „Връзка

” до стойност, по-голяма от нула.

В примера, показан по-долу, сме задали тази стойност на 60, което означава, че всяка минута PuTTY клиентът ще изпраща съобщение за поддържане на активността до сървъра, за да поддържа SSH връзката жива.
Променете настройките за поддържане на активност на PuTTY.

Променете настройките за поддържане на активност на PuTTY.Разбира се, не забравяйте да запазите промените си за PuTTY сесията (“Категория” > “Запазени сесии” > “Запазване

“).

Конфигурация от страна на сървъраПромяната на опциите за изчакване на сървъра засяга всички клиенти, които се свързват към сървъра. Трябва да редактирате „/etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

”, за да направите това.

TCPKeepAlive yes
ClientAliveInterval 120 
ClientAliveCountMax 30
След това задайте следните три опции:
Променете настройките за поддържане на активността на SSH сървъра.

Променете настройките за поддържане на активността на SSH сървъра.

  • Ето какво означава всяка от тези три опции:TCPKeepAlive
  • : Указва дали системата трябва да изпраща TCP съобщения за поддържане на активността на клиента.ClientAliveInterval
  • : Задава интервал на изчакване в секунди, след който, ако не са получени данни от клиента, SSH сървърът ще изпрати съобщение през шифрования канал, за да поиска отговор от клиента. По подразбиране е 0, което показва, че тези съобщения няма да бъдат изпратени на клиента.ClientAliveCountMax

: Задава броя активни съобщения на клиента, които могат да бъдат изпратени, без SSH сървърът да получава никакви съобщения обратно от клиента. Ако този праг бъде достигнат, докато се изпращат съобщения за активен клиент, SSH сървърът ще прекъсне връзката с клиента, прекратявайки сесията. Стойността по подразбиране е 3.

Както в случая по-горе с конфигурацията от страна на клиента, SSH сървърът ще поддържа връзката активна за един час (120 * 30 = 3600 секунди).

sudo systemctl restart ssh

Накрая рестартирайте SSH сървъра:

Долен ред

Внедряването на SSH изчакване и поддържане на активността представя нюансиран баланс между подобряване на сигурността и осигуряване на надеждни връзки.

Предимствата на SSH таймаутите и keepalive са очевидни в приноса им към сигурността на мрежата чрез автоматично прекратяване на неактивните сесии, като по този начин се намалява рискът от неоторизиран достъп и потенциални атаки.

От друга страна, недостатъците се появяват от прекалено ревностното прилагане на изчакване и поддържане на активност. Прекалено агресивните настройки могат да доведат до непреднамерени прекъсвания на връзката, възпрепятствайки производителността и причинявайки разочарование на потребителите.

Така че, за да постигнат правилния баланс, администраторите трябва внимателно да обмислят своята мрежова инфраструктура и потребителско поведение. По този начин се създава сигурна и ефективна среда за отдалечена комуникация, насърчавайки удовлетворението на потребителите и защитата на данните. Вижте клиентска страна или сървърна страна

man файлове за допълнителна информация относно допълнителни опции за конфигурационен файл.

Публикациите се превеждат автоматично с google translate

Loading


Сподели