Ssh සම්බන්ධතා කල් ඉකුත්වීම සහ GNOME පර්යන්තය කැටි කිරීම වළක්වා ගත හැකි මාර්ගය


238

මම ssh හරහා සමහර සේවාදායකයන්ට සම්බන්ධ වූ විට, එය කල් ඉකුත් වී ටර්මිනලය "කැටි කරයි" (ආදානය පිළිගන්නේ නැත, විසන්ධි නොකරයි, ssh ක්‍රියාවලිය හෝ කිසිවක් විනාශ කිරීමට Ctrl-C ට නොහැකි).

මෙය උබුන්ටු හි ඇති gnome-terminalඅතර එය පර්යන්ත ආදානය / ප්‍රතිදානය විරාමයක් ලෙස පෙනේ, නමුත් GNOME Terminal මෘදුකාංගයේ ක්‍රියාකාරිත්වයට එය බලපාන්නේ නැත. එබැවින් gnome-terminalssh සමඟ කරදරකාරී නොගැලපීමකට වඩා අඩු දෝෂයකි .

ඉතින්, කල් ඉකුත් වූ ssh සම්බන්ධතා වලින් පර්යන්තය වැළැක්වීමට / නැවත ලබා ගැනීමට ක්‍රමයක් තිබේද?


Answers:


261

ටික වේලාවකින් සේවාදායකයාගෙන් කිසිවක් නොඇසෙන්නේ නම් sshd (සේවාදායකය) සම්බන්ධතාවය වසා දමයි. වරකට වරක් සේවාදායකයාට ජීවිත සං sign ා යැවීමට ඔබේ සේවාදායකයාට පැවසිය හැකිය.

මේ සඳහා වන වින්‍යාසය ගොනුවේ ~/.ssh/configඇත. සෑම මිනිත්තු හතරකටම දුරස්ථ තැටියට සං signal ාව යැවීමට, පහත සඳහන් දෑ ඔබේ තුළට දමන්න ~/.ssh/config.

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

මගේ මගේ තුළ ඇත්තේ මෙයයි ~/.ssh/config.

සියලුම ධාරක භාවිතය සඳහා එය සක්‍රීය කිරීමට:

Host *
  ServerAliveInterval 240

chmod 600 ~/.ssh/configවින්‍යාස ගොනුව ලෝකයට කියවිය නොහැකි බැවින් ධාවනය කිරීමට වග බලා ගන්න .


1
වචන යෙදීමට මට උදව් කිරීම ගැන ස්තූතියි sblair, එය බෙහෙවින් අගය කරනු ලැබේ. මා විසින් "වෙනස් නොකළ යුතුය" යන්න "නොකළ යුතුය" යන්න වෙනස් කළ නිසා ssh ගොනුවේ අවසරයන් පරික්ෂා කරන අතර එය ලෝකයක් හෝ කණ්ඩායමක් කියවිය හැකි නම් එය අසමත් වේ.
ලුඩ්විග් වෙයින්සියර්

1
OP ඉල්ලා සිටියේ මෙය නොවේ. අක්‍රියතාවය නිසා ඔහු පයින් ගසන්නේ නැත. ඔහු සම්බන්ධ වීමට උත්සාහ කරන අතර ඔහුගේ පර්යන්තය කැටි වේ.
සෙරින්

කොහෙද මේ ~/.ssh/config?
පරිශීලක

1
@ පරිශීලක '~ /' ඔබගේ නිවසේ ෆෝල්ඩරය නියෝජනය කරයි. '.ssh' යනු ඔබගේ නිවසේ ෆෝල්ඩරය තුළ ඇති ෆෝල්ඩරයකි.
wkm

6
ඔබගේ සම්බන්ධතාවය සැබවින්ම නැතිවී යන්නේ නම් මෙය
නිෂ් less ල වේ

252

මාධ්ය Enter, ~, .මිදුනු සැසියක් විසන්ධි කිරීමට එකිනෙකා.

Ssh man පිටුවේ "ESCAPE CHARACTERS" කොටසේ යටින් පවතින විස්තර පැහැදිලි කරයි.


40
මෙම පිළිතුර ප්‍රශ්නයට වඩාත් නිවැරදිව පිළිතුරු දීමට මට පෙනේ, කෙසේ හෝ මා සොයන පිළිතුර විය.
CoatedMoose

ඔබ රේඛාව uncomment කිරීමට අවශ්ය බව සටහන EscapeChar ~දී /etc/ssh/ssh_config(හෝ ~/.ssh/ssh_configඔබ කැමති නම්).
ආදිත්‍ය පාර්ලිමේන්තු මන්ත්‍රී

itadityamenon නැත, EscapeChar ~දැනටමත් ගොඩනගා ඇති පෙරනිමිය වේ.
පීටර් අයිසන්ට්රෝට්

2
@Mark ප්රශ්නය "ssh සම්බන්ධතා සිට පර්යන්තය නැවත ඇති වීම වැළැක්වීම සඳහා ක්රමයක් පවතින අසයි කල් ඉකුත් වී ඇති ?" මගේ අවධාරණය.
CoatedMoose

2
ප්‍රශ්නයේ සන්දර්භය තුළ එය වැරදියි, මට අවශ්‍ය වූයේ මෙයයි.
සුබින් සෙබස්තියන්

39

මෙය පවා ඔබේ ප්‍රශ්නයට answer ජු පිළිතුරක් නොවේ, එය ඔබට ඇති ගැටලුවට බෙහෙවින් සම්බන්ධ වේ. සම්බන්ධතාවය සජීවීව තබා ගැනීමට උත්සාහ කරනවා වෙනුවට (සියලුම සම්බන්ධතා අවසානයේදී මිය යයි) ඔබට ටර්මිනල් බහුකාර්ය භාවිතා කළ හැකිය, වැනි screenසහ tmuxඔබේ පර්යන්තය විසන්ධි වුව ද පසුබිම තුළ සැසිය සජීවීව තබා ගන්න.

අත්යවශ්යයෙන්ම ඔබ SSH සේවාදායකයට පිවිසෙන විට ඔබ වහාම ක්රියාත්මක වන screenඅතර එය නව සැසියක් නිර්මාණය කර අමුණනු ඇත:

$ screen

එවිට ඔබ සාමාන්‍යයෙන් කරන ආකාරයට ඉදිරියට ගොස් ෂෙල් එකෙන් ඔබේ වැඩ කරන්න. දැන් සම්බන්ධතාවය අතහැර දැමුවහොත්, ඔබට නැවත සබැඳිව ගොස් SSH හරහා සේවාදායකයට නැවත සම්බන්ධ විය හැකි විට, ඔබට වත්මන් සැසි ලැයිස්තුවක් ලැබෙනු ඇත:

$ screen -ls

සැසියකට නැවත සම්බන්ධ වීමට:

$ screen -r <session>

<session>PID හෝ සැසියේ නම කොහිද ? ඔබ ඔබේ සැසිවාරයට නැවත සම්බන්ධ වන අතර ඔබ නතර කළ ස්ථානයේ සිට ඉදිරියට යා හැකිය!

ඔබට සැසිය වෙන් කොට නිවසේ සිට නැවත සම්බන්ධ වී ඔබ නතර කළ ස්ථානයෙන් ලබා ගත හැකිය. ඔබ C-aපසුව භාවිතා කරන සැසිය වෙන් කර ගැනීමට C-d( Control + Aඑය පසුව Control + D).

නැත සරල සමඟ අමුත්තන් නිබන්ධන මෙන්ම.

දුරස්ථ සේවාදායක භාවිතා කිරීම screenසහ භාවිතා tmuxකිරීම හොඳම භාවිතයක් ලෙස සලකනු ලබන අතර එය බෙහෙවින් නිර්දේශ කෙරේ . සමහර අය screenඔවුන්ගේ පෙරනිමි පිවිසුම් කවචය තරම් දුරට යති , එබැවින් ඔවුන් සම්බන්ධ වූ විට ඔවුන් වහාම නව screenසැසියක් ආරම්භ කරයි .


2
තවත් විකල්පයක් වන්නේ mosh
Zombies

ඔබ විටින් විට පහත වැටෙන හොට්ස්පොට් හෝ වයිෆයි භාවිතා කරන්නේ නම් මෙය විශේෂයෙන් ප්‍රයෝජනවත් වේ.
රැන්ඩල්

12

-o ServerAliveInterval=30ඔබගේ සම්බන්ධතා නූලට එකතු කිරීමට උත්සාහ කරන්න ( 30එයින් අදහස් වන්නේ තත්පර 30 ක් වන අතර ඇත්ත වශයෙන්ම එය සකස් කළ හැකිය)


6

ඔබට SSH සේවාදායක පැත්තෙන් නිෂ්ක්‍රීය කල් ඉකුත් වීමේ කාල පරතරයක් සැකසිය හැකිය:

ගොනුව: /etc/ssh/ssh_config

අන්තර්ගතය:

ClientAliveInterval XX
ClientAliveCountMax YY

මෙය සේවාදායක සැකසුම මෙන් ම ක්‍රියා කරයි, නමුත් ශුන්‍ය පැකට් සේවාදායකයාට වඩා සේවාදායකයෙන් යවනු ලැබේ.

උපුටා ගැනීම:

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


2

සේවාදායකයා කල් ඉකුත්වීම වැළැක්වීමට කැමති පුද්ගලයින් සඳහා.

ConnectTimeout 0වින්‍යාස ගොනුවේ සැකසීමට ඔබට උත්සාහ කළ හැකිය . 0 අගය යන්නෙන් අදහස් වන්නේ වසා නොමැති නම් සම්බන්ධතාවය දින නියමයක් නොමැතිව පවත්වා ගෙන යනු ඇති බවයි.

ඔබගේ වින්‍යාස (හෝ ssh_config) ගොනුව මේ වගේ විය හැක:

Host *
   ConnectTimeout 0

0

මගේ නඩුවේ ගැටළුව විශාල MTU ප්‍රමාණයෙන් විය. ඔබ NAT භාවිතා කරන්නේ නම් ඔබට රවුටරයේ MTU වෙනස් කළ හැකිය, නමුත් මම සේවාදායකයේ MTU වෙනස් කරමි:

sudo /sbin/ifconfig eth0 mtu 1036
sudo /etc/init.d/networking restart

වින්ඩෝස් හි ඔබට මෙම යතුර වැඩි කළ හැකිය:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpMaxDataRetransmissions"=dword:00000010
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.