Изживейте безпроблемни 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
Какво означава всичко това? Времето за поддържане на активност е 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, трябва да зададат „Секунди между поддържащи активности” опция в „Връзка
” до стойност, по-голяма от нула.
Променете настройките за поддържане на активност на PuTTY.Разбира се, не забравяйте да запазите промените си за PuTTY сесията (“Категория” > “Запазени сесии” > “Запазване
“).
Конфигурация от страна на сървъраПромяната на опциите за изчакване на сървъра засяга всички клиенти, които се свързват към сървъра. Трябва да редактирате „/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
”, за да направите това.
TCPKeepAlive yes
ClientAliveInterval 120
ClientAliveCountMax 30
Променете настройките за поддържане на активността на 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