Sshd_config හි `ServerAliveInterval` සහ` ClientAliveInterval` යන විකල්පයන් හරියටම කරන්නේ කුමක්ද?


181

මම සොයා මේ ප්රශ්නය , නමුත් මට සමාවෙන්න මට තරමක් විචල්යයන් දෙකක් මත සැකසුම් තේරෙන්නේ නැහැ ඉන්නේ ServerAliveIntervalසහ ClientAliveIntervalලොව පිළිගත් ප්රතිචාර සඳහන්. මගේ දේශීය සේවාදායකය කල් ඉකුත්වී ඇත්නම්, මම මෙම අගය බිංදුවට සැකසිය යුතුද? එසේ නම් එය කිසි විටෙකත් කල් ඉකුත් වේද? මම ඒ වෙනුවට තත්පර 300 ක් හෝ වෙනත් දෙයක් සැකසිය යුතුද?

මගේ ප්‍රශ්නය සරලවම කිවහොත්, මගේ සමහර සම්බන්ධතා මා අත්හිටුවා පසුව ප්‍රතිචාරය සමඟ මගේ ලැප්ටොප් පරිගණකය අවලංගු කරන Write failed: Broken pipeඅතර සමහර ඒවා එසේ නොවේ. කැඩුණු පයිප්පයකින් අසමත් නොවන පරිදි දේශීය sshd එකක් නිවැරදිව වින්‍යාස කරන්නේ කෙසේද?

Answers:


231

ServerAliveInterval : සේවාදායකයාට ශුන්‍ය පැකට්ටුවක් යැවීමට පෙර සේවාදායකයා බලා සිටින තත්පර ගණන (සම්බන්ධතාවය සජීවීව තබා ගැනීමට).

ClientAliveInterval : බව තත්පර ගණන සේවාදායකය සේවාලාභියා වෙත ශූන්ය පැකට් යැවීම (ඔබගේ සම්බන්ධතාව කිරීමට) පෙර බලා ඇත.

0 ක අගයක් සැකසීම (පෙරනිමිය) මෙම විශේෂාංග අක්‍රීය කරනු ඇති අතර එමඟින් ඔබේ සම්බන්ධතාවය වැඩි කාලයක් අක්‍රිය නම් පහත වැටෙනු ඇත.

ServerAliveInterval යනු සම්බන්ධතාවයක් සජීවීව තබා ගැනීමේ වඩාත් පොදු උපාය බව පෙනේ. කැඩුණු නල ගැටළුව වළක්වා ගැනීම සඳහා, මගේ .ssh / config ගොනුවේ මා භාවිතා කරන ssh වින්‍යාසය මෙන්න:

Host myhostshortcut
     HostName myhost.com
     User barthelemy
     ServerAliveInterval 60
     ServerAliveCountMax 10

ඉහත සැකසුම පහත පරිදි ක්‍රියා කරයි,

  1. සේවාදායකයා තත්පර 60 ක් (ServerAliveInterval time) අක්‍රියව බලා සිටින අතර, සේවාදායකයාට “නො-ඔප් ශුන්‍ය පැකට්ටුවක්” යවා ප්‍රතිචාරයක් අපේක්ෂා කරයි. කිසිදු ප්‍රතිචාරයක් නොලැබුනේ නම්, එය ඉහත ක්‍රියාවලිය 10 (ServerAliveCountMax) වාර (තත්පර 600) තෙක් උත්සාහ කරයි. සේවාදායකයා තවමත් ප්‍රතිචාර නොදක්වන්නේ නම්, සේවාදායකයා ssh සම්බන්ධතාවය විසන්ධි කරයි.

සේවාදායක පැත්තේ ඇති ClientAliveCountMax ද උදව් විය හැකිය. විසන්ධි වීමට පෙර සේවාදායකයෙකුට ප්‍රතිචාර නොදක්වා සිටීමට කොපමණ කාලයක් ගතවේද යන්නෙහි සීමාව මෙයයි. ClientAliveInterval තුනක මෙන් පෙරනිමි අගය 3 වේ.


හරි, ඒ නිසා මම "ශුන්‍ය තත්පර ගණනක් අර්ථ නිරූපණය කරන්නේ" ජීවතුන් අතර නොසිටින්න "යන්නෙන් අදහස් කරන්නේ එය සේවාදායකයා / සේවාදායකය ඡන්දය නොදෙන්නේ ඇයි?
එම්. ටිබිට්ස්

3
yup 0 = ශුන්‍ය පැකට්ටුවක් එවන්න එපා. තවත් වෙනස් දෙයක් වනුයේ සේවාදායක වින්‍යාසය තුළ ServerAliveInterval සකසා ඇති අතර ClientAliveInternal සේවාදායක වින්‍යාසය තුළ සකසා තිබීමයි.
බාර්තෙලමි

8
උදාසීනත්වය කල් ඉකුත්වීම වැළැක්වීම සඳහා මෙය හොඳ උපදෙස් සේ පෙනේ, නමුත් සේවාදායකයා අත්හිටුවන විට කැඩුණු පයිප්ප වැළැක්වීමේ OP ප්‍රශ්නයට එය සම්බන්ධ වන්නේ කෙසේදැයි මට නොතේරේ. නිදා සිටියදී, සේවාදායකයාට ශුන්‍ය පැකට්ටුවක් යැවීමට නොහැකි වනු ඇත, එබැවින් නිසැකවම මෙම සැකසුම වැදගත්ද?
ස්පාර්හෝක්

ServerAlive කොටස නිසැකවම. ClientAliveInterval / ClientAliveCountMax යනු මෙහි උපකාරී වේ.
javawizard

1
මෙම පැරණි පිළිතුර දෙස ආපසු හැරී බලන විට, දෙවන ඡේදයේ ඇති ප්‍රශ්නයට නොව මාතෘකාවට ඇති ප්‍රශ්නයට ප්‍රතිචාර දැක්වූ බව මම විශ්වාස කරමි. අත්හිටවූ අවස්ථාවකදී ජොනස් වීලිකි සේවාලාභී අන්තරාලය නරක විය හැකි බැවින් අත්හිටවූ සේවාදායකයා සේවාදායකයාට පිළිතුරු නොදෙන අතර සේවාදායකයා අවසානයේ සේවාදායකයා විසන්ධි කරනු ඇත.
බාර්තෙලමි

30

මෙය sshd_configඅත්පොත ( man sshd_config) හි විස්තර කර ඇත :

ClientAliveInterval

සේවාදායකයාගෙන් කිසිදු දත්තයක් නොලැබුනේ නම් තත්පර කිහිපයකින් කල් ඉකුත් වූ කාල පරතරයක් සකසයි, සේවාදායකයාගෙන් ප්‍රතිචාරයක් ඉල්ලා සිටීමට sshd සංකේතාත්මක නාලිකාව හරහා පණිවිඩයක් යවනු ඇත. පෙරනිමිය 0 වන අතර, මෙම පණිවිඩ සේවාදායකයාට නොයවන බව අඟවයි. මෙම විකල්පය අදාළ වන්නේ ප්‍රොටෝකෝලය 2 අනුවාදයට පමණි.

ClientAliveCountMax

පෙරනිමි අගය 3. ClientAliveInterval(පහත බලන්න) 15 ලෙස සකසා ඇති ClientAliveCountMaxඅතර එය පෙරනිමියෙන් ඉතිරිව තිබේ නම්, ප්‍රතිචාර නොදක්වන SSH සේවාදායකයින් තත්පර 45 කට පසුව විසන්ධි වේ. මෙම විකල්පය අදාළ වන්නේ ප්‍රොටෝකෝලය 2 අනුවාදයට පමණි.

සේවාදායක විකල්ප සඳහා, පහත දැක්වෙන පැහැදිලි කිරීම බලන්න man ssh_config:

ServerAliveInterval

තත්පර කිහිපයකින් කල් ඉකුත් වූ කාල පරතරයක් සකසයි, ඉන්පසු සේවාදායකයෙන් දත්ත කිසිවක් නොලැබුනේ නම්, සේවාදායකයාගෙන් sshප්‍රතිචාරයක් ඉල්ලා සිටීමට සංකේතාත්මක නාලිකාව හරහා පණිවිඩයක් යවනු ලැබේ. පෙරනිමිය 0 වන අතර එයින් පෙන්නුම් කරන්නේ මෙම පණිවිඩ සේවාදායකයට නොයවන බවයි. මෙම විකල්පය අදාළ වන්නේ ප්‍රොටෝකෝලය 2 අනුවාදයට පමණි.

ServerAliveCountMax

පෙරනිමි අගය 3 වේ. නිදසුනක් ලෙස, ServerAliveInterval15 ට සකසා ඇති ServerAliveCountMaxඅතර පෙරනිමියෙන් ඉතිරිව තිබේ නම්, සේවාදායකයා ප්‍රතිචාර නොදක්වන්නේ නම් sshතත්පර 45 කට පසුව විසන්ධි වේ. මෙම විකල්පය අදාළ වන්නේ ප්‍රොටෝකෝලය 2 අනුවාදයට පමණි.

ඉහත මත පදනම්ව, 0 යනු එය අක්‍රීය කර ඇති බවයි. එබැවින් බිඳුණු පයිප්ප දෝෂය වළක්වා ගැනීම සඳහා ඔබ මෙම අගයන් ඉහළ මට්ටමක තැබිය යුතුය .


ප්‍රයෝජනවත් තනතුර. නමුත් මම මෙයින් කලකිරී සිටිමි. මම සෑම තැනකම විශාල කාල පරතරයන් සකසමින් සිටින අතර මිනිත්තු කිහිපයකට පසුව මගේ සම්බන්ධතාවය තවමත් බිඳී යමින් පවතී. (උබුන්ටු මත ඕපන්ෂ් භාවිතා කිරීම, එය අදාළ දැයි විශ්වාස නැත)
ශ්‍රීධර් සර්නොබත්

1
7 user7000 සේවාදායකයා (ssh) සහ සේවාදායකය (sshd) යන දෙකම වින්‍යාස කරන්න. මෙය උපකාර විය හැක: 'දුරස්ථ අවසන් වන විට මෙම SSH සම්බන්ධය අනපේක්ෂිත ලෙස වසා දමන ලදී' ගැටලු විසින් අදාල කරුණ නිවැරදි කිරීමට කෙසේද .
kenorb

මම හිතන්නේ මම කොහේ හරි යනවා. සමහර විට මම ServerAliveIntervalමගේ වින්‍යාස ගොනුවේ ඉඩක් නොතිබීම විය හැකිය .
ශ්‍රීධර් සර්නොබාත්

BTW, ClientAliveInterval0 හෝ කුඩා ලෙස සැකසීම වඩා හොඳ බව පෙනේ , එසේම ClientAliveCountMaxකුඩා කරන්න, එසේ නොමැති නම්, විශාල ssh පිවිසුම් තිබේ නම්, කාලයත් සමඟ එය ssh සේවාව හිර වී ඇති අතර වරින් වර ssh අසමත් වනු ඇත.
එරික් වැන්ග්

20

බාර්තෙලමිගේ පිළිතුර සිසිල් නමුත් ඇත්ත වශයෙන්ම ගැටලුවේ මුල සොයා නොගනී. ඔබ ඔබේ යන්ත්‍රය අත්හිටුවා ඇති අතර ඔබ ඔබේ පරිගණකය ආරම්භ කරන විට SSH සැසිය තවමත් ජීවමානව පවතී.

Ssh සඳහා එවැනි වින්‍යාසයක් නොමැති අතර එමඟින් සම්බන්ධතාවය එලෙසම පවතිනු ඇත. SSH TCP භාවිතා කරයි, ආරම්භයක් සඳහා ඔබට තුන් ආකාරයකින් අත් සේදීම අවශ්‍ය වන අතර පසුව යම් නිෂ්ක්‍රීය කාලයකින් පසු ජීවත්ව සිටින්න. ඔබ වසා දැමූ විට / ශිශිර වූ විට ඔබගේ සියලුම TCP සම්බන්ධතා FIN සමඟ වසා ඇත. එය ජය ගැනීමට ක්‍රමයක් නැත.

අපිරිසිදු විසඳුමක් සඳහා සම්බන්ධතාවය තබා ගැනීම සඳහා ඔබට VPS හෝ තිරය සහිත වෙනත් මාර්ගගත කොටුවක් භාවිතා කළ හැකිය. මගේ උපදෙස් ආරක්ෂක හේතූන් මත එසේ නොකරන්න.


මම හිතන්නේ ආරක්ෂාව අනවශ්‍යයි, මන්ද එය ලොග් වන යන්ත්‍රයට වඩා ආරක්ෂිත යන්ත්‍රයක් විය හැකි බැවිනි. එය ආරක්ෂිත බවට වග බලා ගන්න. එහි මම මගේ එදිනෙදා වැඩ කටයුතු කරන ආකාරය, j න වූ පැනීමේ ධාරකයක බහු පැනල් පද කිහිපයක් (ග්නස් තිරය) විවෘත කර තබන්න. එබැවින් එය ඇත්තෙන්ම අපිරිසිදු නොවේ, එය සැබවින්ම පරිපූර්ණ solution ලදායී විසඳුමකි, ජම්ප් ධාරකය භාවිතා කරන්න, ඒ වගේම ssh වින්‍යාසයද තබා ගන්න.
බ්‍රයන් තෝමස්

16

ලැබුණු පැකට් වලට ACK යැවීම නැවැත්වීමෙන් පසු SSH සම්බන්ධතාවයක් (TCP වීම) ජීවමානව පවතින බවට ඔබට සහතික විය නොහැකි බැවින්, මගේ සියලු SSH සම්බන්ධතා නැවත ආරම්භ කිරීමට මම පුද්ගලිකව http://www.harding.motd.ca/autossh/ භාවිතා කරමි. මම නොසිතූ විගසම.

ග්නූ තිරය සේවාදායක පැත්තේ භාවිතයේ ඇති බැවින්, නැවත ඇමිණීම මා කලින් සිටි ස්ථානයට ගෙන යයි.

ඔබට එය අතිරේක වරායන්වලට සවන්දීමට හැකි වන අතර එමඟින් සම්බන්ධතා තවමත් ජීවමානදැයි නිරන්තරයෙන් පරීක්ෂා කරයි, නමුත් පුද්ගලිකව එය ආබාධිතයන් සමඟ හොඳින් ක්‍රියාත්මක වන අතර SSH හි ServerAliveInterval/ මත රඳා පවතී ServerAliveCountMax.

තවත් විකල්පයක් වන්නේ http://mosh.mit.edu/ යූඩීපී භාවිතා කරන අතර දිගුකාලීන සම්බන්ධතාවයේ lack නතාවයෙන් බාධාවකින් තොරව යථා තත්ත්වයට පත්වීමයි.


5

nohupඔබේ SSH සම්බන්ධතාවය නොතකා ඒවා ක්‍රියාත්මක වීමට අවශ්‍ය නම් ඔබට විධාන ද ක්‍රියාත්මක කළ හැකිය .

උදා

$ nohup tar -xzf some_huge.tar.gz &

මෙම &, මම අවශ්ය, හිතන්නේ නැහැ, නමුත් ඔබට වෙනත් දේවල් කරන්න පුළුවන් ඒ නිසා පසුබිමේ ක්රියාවලිය සිතල සිට එය පහසු වේ.

ටික වේලාවක් ගතවන ඕනෑම ක්‍රියාවලියක් සඳහා මම සෑම විටම nohup භාවිතා කරමි, එවිට කුමන හේතුවක් නිසා හෝ සම්බන්ධතාවය නැති වුවහොත් නැවත ආරම්භ කිරීමට අවශ්‍ය නොවේ - විදුලිය ඇනහිටීම් (මගේ දුරස්ථ ස්ථානයේ, පැහැදිලිවම සත්කාරකයේ නොවේ), ජාල ක්‍රියා විරහිත වීම, ඕනෑම දෙයක්.


Zsh හි nohup නිසි ලෙස ක්‍රියා නොකරන බව සලකන්න!
ශ්‍රීධර් සර්නොබාත්

7 user7000 ඒ ගැන නුසුදුසු වන්නේ කුමක්ද?
බට්ල් බට්කස්

මට මතක නැත, සේවාදායකයා විසන්ධි වූ පසු එය මූලික වශයෙන් ක්‍රියාවලිය දිගටම කරගෙන නොගිය බව මම සිතමි. එය මීට වසර කිහිපයකට පෙර වූ අතර මම නොහප් භාවිතය නැවැත්වූ අතර ඒ වෙනුවට බැහැර කිරීම භාවිතා කළෙමි.
ශ්‍රීධර් සර්නොබත්

2
එතැන් සිට ගැටලුව නිරාකරණය කර ඇත්නම් මිස zshපරිශීලකයින් disown -hඒ වෙනුවට රැඳී සිටිය යුතු යැයි මම සිතමි nohup.
බට්ල් බට්කස්

1

ඔබගේ දිගුකාලීන සැසිය තිරය තුළ තබන්න විස්තර සඳහා තිරය -h බලන්න

එමඟින් ඔබට ssh භාවිතයෙන් යන්ත්‍රයට නැවත සම්බන්ධ වී තිර සැසියට නැවත සම්බන්ධ කළ හැකිය


තිරය ​​යෝජනා කරන පුද්ගලයින්ගේ ප්‍රතිශතය එයම භාවිතා කරන්නේ කෙසේදැයි මම කල්පනා කරමි.
ශ්‍රීධර් සර්නොබත්

1
මම හිතන්නේ tmux වඩා හොඳ යෝජනාවක්, කේත වෙනස් කිරීමේ දිනය github.com/tmux/tmux එදිරිව git.savannah.gnu.org/cgit/screen.git/log පරීක්ෂා කරන්න
සුහයිබ්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.