Write Failed: broken pipe
දෝෂ වළක්වා ගැනීම සඳහා සේවාදායකයා සහ සේවාදායකය යන දෙකෙහිම SSH වින්යාස කිරීමට මට කුමක් කළ හැකිද? ඔබේ සේවාදායක පරිගණකය නිදාගෙන නැවත ආරම්භ කරන්නේ නම් එය බොහෝ විට සිදුවේ.
screen
?
Write Failed: broken pipe
දෝෂ වළක්වා ගැනීම සඳහා සේවාදායකයා සහ සේවාදායකය යන දෙකෙහිම SSH වින්යාස කිරීමට මට කුමක් කළ හැකිද? ඔබේ සේවාදායක පරිගණකය නිදාගෙන නැවත ආරම්භ කරන්නේ නම් එය බොහෝ විට සිදුවේ.
screen
?
Answers:
මම මෙය /etc/ssh/ssh_config
ලිනක්ස් සහ මැක් සඳහා උත්සාහ කර ඇත :
Host *
ServerAliveInterval 120
තත්පර කිහිපයකින් එය සේවාදායකයට රහසිගත පණිවිඩයක් යැවිය යුත්තේ මෙයයි. එය ක්රියාත්මක නොවන්නේ නම්, ඔබ වැඩ කරන අතරතුර සෑම මිනිත්තු දෙකකට වරක් ඇතුල් කිරීමට ඔබ වඳුරෙකු පුහුණු කරන්න.
එක්කෝ ඔබ නියම කළ හැකි ServerAliveInterval
තුළ /etc/ssh/ssh_config
ග්රාහකය හෝ ClientAliveInterval
දී /etc/ssh/sshd_config
සේවාදායකය යන්ත්රය. ඔබ තවමත් දෝෂය ලබා ගන්නේ නම් පරතරය අඩු කිරීමට උත්සාහ කරන්න.
තනි පරිශීලකයෙකු සඳහා වින්යාසය ~/.ssh/config
සේවාදායකයේ සහ සේවාදායකයාගේ පැත්තෙන් ගොනුවේ සැකසිය හැකිය . ගොනුවට නිවැරදි අවසර ඇති බවට වග බලා ගන්න chmod 644 ~/.ssh/config
.
Bad configuration option: ClientAliveInterval
Bad configuration option
OSX 10.8.4 හි මට එම දෝෂයම ඇත.
SSH සැසි බොහෝ හා නොවැලැක්විය හැකි හේතු නිසා කැඩී යා හැක.
මෙය නිසා ඇතිවන ගැටළු අවම කිරීම සඳහා භාවිතා කළ හැකි ප්රයෝජනවත් උපයෝගීතාවයක් ලෙස හැඳින්වේ screen
. තිරය ප්රබල උපයෝගීතාවයක් වන අතර එය ssh සැසියෙන් ස්වාධීනව ජීවත්වන බහු පර්යන්ත පාලනය කිරීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, ඔබ screen
ssh සැසියක ධාවනය කරන්නේ නම් ඔබට නව පර්යන්තයක් විවෘතව පෙනෙනු ඇති අතර ඔබට එය ක්රියාත්මක කිරීමට භාවිතා කළ හැකිය. ඔබගේ ssh සැසිය ක්රියාවලියේදී මිය යන බව කියමු. screen -d
එවිට ධාවනය කිරීමෙන් screen -r
අවසාන සැසිය නැවත විවෘත වන අතර ඔබට එතැන් සිට ඉදිරියට යාමට හැකි වේ. සමහර ලියකියවිලි භාවිතා කිරීමට පෙර එය කියවීමට වග බලා ගන්න .
screen -d -r
ඔබේ අවසාන සැසිය නැවත ලබා ගැනීමට ඔබට පහසුවෙන් ධාවනය කළ හැකිය .
screen -dr
. නැතහොත් screen -x
ඔබ කිරීමට සැලසුම් කරන දේ මත පදනම්ව. කාරණය වන්නේ, එම ස්විචයන් කරන්නේ කුමක්ද යන්න යමෙකු දැනගත යුතු අතර එමඟින් කෙනෙකුට සුදුසු ඒවා භාවිතා කළ හැකි අතර අන්තර්ජාල පුද්ගලයින්ගේ යෝජනා අන්ධ ලෙස අනුගමනය නොකරන්න. ලස්සන සංයුක්ත සාරාංශයක් මෙහි ඇත: ss64.com/bash/screen.html
සේවාලාභී වින්යාසය
ගොනුව සෑදීමට උත්සාහ කරන්න:
~/.ssh/config
අන්තර්ගතය එක් කරන්න:
Host *
ServerAliveInterval 30
ServerAliveCountMax 5
දැන් ඔබේ සේවාදායකයට ගොස් ඔබේ ගැටලුව විසඳී ඇත්දැයි බලන්න. ClientAliveInterval විකල්පය ප්රයෝජනවත් වන්නේ ssh සේවාදායකය (aka sshd) වින්යාස කිරීමේදී පමණි, එය ssh ග්රාහක පැත්තේ කිසිවක් වෙනස් නොකරයි, එබැවින් ඉහත වින්යාස ගොනුවේ එය භාවිතා නොකරන්න.
පෙර තත්පර 30 තුළ (ඉහත දක්වා ඇති පරිදි) පැකට් කිසිවක් නොලැබුනේ නම් මෙය සේවාදායකයට හෙලෝ-යූ-ඔබ-සං signal ාවක් යවනු ඇත. කෙසේ වෙතත්, අඛණ්ඩව හෙලෝ-ඔබ-ඔබ සිටින සං sign ා ගණන ServerAliveCountMax වෙත ළඟා වුවහොත් ssh සේවාදායකයෙන් විසන්ධි වේ. මෙම අගය පෙරනිමි 3 ක් වේ (එබැවින් සේවාදායක ක්රියාකාරකම් නොමැතිව තත්පර 3 * 30 = 90), එය ඔබගේ අවශ්යතාවයට ගැලපෙන පරිදි වැඩි කරන්න. .Sh / config ගොනුවට තවත් වින්යාස විකල්ප ඇත, ඔබට කියවිය හැකිය:
SSH වින්යාස ගොනුවක් භාවිතා කිරීම
වෙනත් විකල්ප පිළිබඳ වැඩි විස්තර සඳහා. මෙම උදාහරණය සම්බන්ධ වන ඔබ සම්බන්ධ කරන සෑම සේවාදායකයකටම මෙය යෙදීමට ඔබට අවශ්ය නොවනු ඇත. හෝ පේළිය ආදේශ කිරීමෙන් එය විශේෂිත සේවාදායකයකට පමණක් සීමා Host *
කරන්න Host <IP>
(IP ලිපිනයකින් ආදේශ කරන්න, ssh_config man පිටුව බලන්න).
සේවාදායක වින්යාසය
ඒ හා සමානව ඔබේ සේවාදායකයින් සමඟ මෘදු ලෙස කටයුතු කරන ලෙස සේවාදායකයාට පැවසිය හැකිය. වින්යාස ගොනුව /etc/ssh/sshd_config
.
ClientAliveInterval 20
ClientAliveCountMax 5
පිරික්සුම් වලට ප්රතිචාර නොදක්වා සැකසීමෙන් හෝ වෙනස් ClientAliveInterval
කිරීමෙන් සහ උපරිම ssh සේවාදායකයාගේ අක්රියතාව සැකසීමෙන් ඔබට එය අක්රිය කළ හැකිය . TCPKeepAlive හරහා මෙම සැකසීම්වල එක් වාසියක් නම් සංකේතාත්මක නාලිකා හරහා සං als ා යැවීමයි, එබැවින් එය නරක් වීමට ඇති ඉඩකඩ අඩුය.0
ClientAliveInterval
ClientAliveCountMax
මම දුරස්ථව උබුන්ටු සේවාදායකයක් පැහැදිලි සිට නිරවද්යතාවයට යාවත්කාලීන කර ඇති අතර "ලිවීම අසාර්ථකයි. කැඩුණු නළය" යන පණිවිඩය සමඟ උත්ශ්රේණිගත කිරීමේ මධ්යයේ ඇති ssh සම්බන්ධතාවය නැති විය. ClientAliveInterval සහ ServerAliveInterval කිසිවක් කළේ නැත. විසඳුම වන්නේ සේවාදායක ssh හි TCPKeepAlive විකල්ප සක්රිය කිරීමයි:
TCPKeepAlive yes
තුල
/etc/ssh/ssh_config
මෙය උපකාරී වේ යැයි සිතමි
සේවාදායකයා සඳහා, ඔබගේ ~/.ssh/config
(හෝ /etc/ssh/ssh_config
) ගොනුව පහත පරිදි සංස්කරණය කරන්න :
Host *
TCPKeepAlive yes
ServerAliveInterval 120
TCPKeepAlive - පද්ධතිය TCP රඳවා තබා ගැනීමේ පණිවිඩ අනෙක් පැත්තට යැවිය යුතුද යන්න නියම කරයි. ඒවා යවනු ලැබුවහොත්, සම්බන්ධතාවයේ මරණය හෝ එක් යන්ත්රයක බිඳ වැටීම නිසි ලෙස හඳුනාගත හැකිය. කෙසේ වෙතත්, මෙයින් අදහස් කරන්නේ මාර්ගය තාවකාලිකව පහළට ගියහොත් සම්බන්ධතා මිය යන අතර සමහර අය එය කරදරයක් ලෙස සලකන බවයි (පෙරනිමිය 'ඔව්').
ServerAliveInterval - තත්පර කිහිපයකින් කල් ඉකුත් වූ කාල පරතරයක් සකසයි, ඉන්පසු සේවාදායකයෙන් දත්ත කිසිවක් නොලැබුනේ නම්, ssh (1) සේවාදායකයාගෙන් ප්රතිචාරයක් ඉල්ලා සංකේතාත්මක නාලිකාව හරහා පණිවිඩයක් යවනු ඇත. පෙරනිමිය 0 වන අතර එයින් පෙන්නුම් කරන්නේ මෙම පණිවිඩ සේවාදායකයට නොයවන බවයි.
සේවාදායකය සඳහා, ඔබේ /etc/ssh/sshd_config
මෙසේ සංස්කරණය කරන්න :
ClientAliveInterval 600
ClientAliveCountMax 0
ඔබට ssh සේවාදායකයාට විනාඩි 10 කට පසු (තත්පර 600) ස්වයංක්රීයව පිටවීමට (කල් ඉකුත් වීමට) අවශ්ය නම්.
ClientAliveCountMax - ssh සේවාදායකයාගෙන් කිසිදු ප්රතිචාරයක් ලබා නොගෙන ssh සේවාදායකයා විසින් එවන ලද මුළු පිරික්සුම් පණිවිඩය මෙයින් පෙන්නුම් කෙරේ. පෙරනිමිය 3 වේ.
ClientAliveInterval - මෙය තත්පර කිහිපයකින් කල් ඉකුත්වීම පෙන්නුම් කරයි. තත්පර x සංඛ්යාවෙන් පසුව, ssh සේවාදායකයා ප්රතිචාරය ඉල්ලා සේවාදායකයාට පණිවිඩයක් යවනු ඇත. බිහිරි වීම 0 (සේවාදායකයා පරීක්ෂා කිරීමට සේවාදායකයාට පණිවිඩයක් යවන්නේ නැත.).
මෙයද බලන්න: විකල්පයන් ServerAliveInterval
සහ ClientAliveInterval
sshd_config හි හරියටම කරන්නේ කුමක්ද?
මම මෝෂ්ට ආදරෙයි. මම නිතරම සේවාදායකයක් වෙතට ගොස් මගේ ලැප්ටොප් එක වසා කැෆේ එකකට ගොස් එය විවෘත කර කිසිවක් වෙනස් නොවන ලෙස ඉදිරියට ගෙන යන්නෙමි.
මෝෂ් (ජංගම කවචය)
දුරස්ථ පර්යන්ත යෙදුම රෝමිං වලට ඉඩ සලසයි , වරින් වර සම්බන්ධතාවයට සහය දක්වයි , සහ බුද්ධිමත් දේශීය දෝංකාරය සහ පරිශීලක යතුරු එබීම් රේඛා සංස්කරණය කරයි.
මෝෂ් යනු එස්එස්එච් වෙනුවට ආදේශ කිරීමකි. එය වඩාත් ශක්තිමත් සහ ප්රතිචාරාත්මක වේ, විශේෂයෙන් Wi-Fi, සෙලියුලර් සහ දිගු දුර සම්බන්ධතා හරහා.
මෝෂ් යනු නිදහස් මෘදුකාංගයකි, එය ග්නූ / ලිනක්ස්, ෆ්රීබීඑස්ඩී, සොලාරිස්, මැක් ඕඑස් එක්ස් සහ ඇන්ඩ්රොයිඩ් සඳහා ලබා ගත හැකිය.
මට නම්, මම Write failed: Broken pipe
ක්රියාශීලීව ටයිප් කරන විට හෝ ෂෙල් විමසුමේදී පවා ලැබෙමින් සිටියෙමි. මට ටික වේලාවක් දේශීයව අන්තර්ජාලය පිරික්සීමට නොහැකි විය. (මම දුරස්ථව ටර්මිනලය භාවිතා කරමින් උබුන්ටු වෙත සම්බන්ධ වෙමින් සිටියෙමි.)
මගේ ජාලයේ අනෙක් අය නෙට්ෆ්ලික්ස් සහ වෙනත් ස්ථාන වලින් වීඩියෝ විශාල ප්රමාණයක් ප්රවාහනය කරති. මට එය ඔප්පු කළ නොහැක, නමුත් එහි ISP හෝ රවුටරයේ ගැටලුවක් යැයි මම සැක කරමි. උදාහරණයක් ලෙස, වෙරිසොන් සහ නෙට්ෆ්ලික්ස් ඔවුන්ගේ ගනුදෙනුකරුවන්ගේ ජාල ගැටලු සඳහා එකිනෙකාට ඇඟිල්ල දිගු කරති.
ඔබට ඩයල්-අප් සම්බන්ධතාවයක් තිබේ නම් සහ එකවර එස්එස්එච් හෝ ටෙල්නෙට් සම්බන්ධතාවයක් සහිත වීඩියෝ හෝ සංගීතය ප්රවාහනය කරන්නේ නම්, යම් අවස්ථාවක දී ඔබට බිඳුණු නල පණිවිඩයක් ලැබෙනු ඇත. මගේ අයිඑස්පී බ්රෝඩ්බෑන්ඩ් පැකේජය යාවත්කාලීන කිරීමෙන් මගේ බිඳුණු සම්බන්ධතාවය අඩු වාර ගණනක් ඇති බව පෙනේ.
මම මගේ පිළිතුර මෙහි පළ කළේ එය උබුන්ටු වීඑම් එකක් නොවන බැවිනි.
/unix/259225/packet-write-wait-broken-pipe-even-leaving-top-running
ssh -o IPQoS=throughput user@host
SSH වින්යාස සේවාදායකයා හෝ සේවාදායකයා නොසලකා දුරස්ථ සේවාදායකයේ කිසි විටෙක අසමත් වන බවක් මට නොපෙනේ.
#!/bin/bash
while true; do date; sleep 10; done;
එය කිසියම් dummy.sh ගොනුවකට සුරකින්න, ඔබ කවුළුව අවම කිරීමට හෝ එයින් ඉවතට යාමට පෙර එය ඉක්මනින් ධාවනය කරන්න. එය සේවාදායකයේ වත්මන් කාල මුද්දරය මුද්රණය කරමින් සිටින අතර වෙනත් හේතුවක් නිසා සම්බන්ධතාවය අතහැර නොදමන තාක් කල් ඔබේ සම්බන්ධතාවය සජීවීව තබා ගනී. ඔබ නැවත එම පර්යන්තයට ගිය විට, CTRL + C යතුර ඔබා වැඩ කරන්න.
top
ධාවනයෙන් ඉවත් වන්න
ඔබ ssh ඉල්ලන සෑම අවස්ථාවකම ඔබට මෙම ආරුක්කු එකතු කළ හැකිය: -o ServerAliveInterval=15 -o ServerAliveCountMax=3
ඔබ මෙය කරන්නේ නම් / etc / ssh / * වින්යාස ගොනු සංස්කරණය කිරීමට අවශ්ය නැත.
මෙය පහසු කිරීම සඳහා ඔබට bash අන්වර්ථයක් හෝ ශ්රිතයක් හෝ ස්ක්රිප්ට් එකක් සෑදිය හැකිය.
උදා. pty සැකසීමට සහ විමසීම් වළක්වා ගැනීමට do_ssh_pty ස්ක්රිප්ට් තුළ භාවිතා කරයි.
do_ssh() {
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
do_ssh_pty() {
ssh -tt -o "BatchMode=yes" -o "StrictHostKeyChecking=no" -o ServerAliveInterval=15 -o ServerAliveCountMax=3 $*
}
දැන් do_ssh user@host
භාවිතා කළ හැකිය, නැතහොත් do_ssh user@host <args> <command>
මුරකරුවන් සක්රීය වනු ඇත.