SSH උමගක් විශ්වාසදායක ලෙස විවෘතව තබා ගන්නේ කෙසේද?


250

විවිධ මෝඩ ෆයර්වෝල් වටා යෑමට මම වැඩ සිට SSH උමගක් භාවිතා කරමි (එය මගේ ලොක්කා සමඟ කමක් නැත :)). ගැටළුව වන්නේ, ටික වේලාවකට පසු ssh සම්බන්ධතාවය සාමාන්‍යයෙන් එල්ලී ඇති අතර උමග කැඩී ඇත.

මට අවම වශයෙන් උමග ස්වයංක්‍රීයව නිරීක්ෂණය කළ හැකි නම්, උමඟ එල්ලෙන විට මට එය නැවත ආරම්භ කළ හැකිය, නමුත් මම ඒ සඳහා ක්‍රමයක්වත් සොයාගෙන නැත.

මගේ ssh සම්බන්ධතාවය එල්ලීම වළක්වා ගන්නේ කෙසේදැයි මට කිව හැකි තැනැත්තාට ප්‍රසාද ලකුණු, ඇත්ත වශයෙන්ම!


අක්‍රිය නිසා එය ඔබේ උමග මිය ගොස් තිබේද? ඒ නිසා මම අවසාන වශයෙන් භාවිතා, එය "ජීවත්" කිරීමට ඇති සම්බන්ධය මත ආදර්ශ විධාන වීමේදී අවසන් මම මේ ප්රශ්නය මගේ ෆෝන් එකෙන් උමං වරාය විට තිබූ watch: වගේ විධාන watch -n1 60 echo "wiiiii". ජාලය කැඩී හෝ ඔබ එය භාවිතා නොකරන්නේ නම් උමග මිය නොයනු ඇත.
m3nda

Answers:


308

ඔබට ස්වයංක්‍රීයව අවශ්‍ය බව පෙනේ . මෙය ssh උමගක් නිරීක්ෂණය කර අවශ්‍ය පරිදි නැවත ආරම්භ කරනු ඇත. අපි එය වසර කිහිපයක් තිස්සේ භාවිතා කර ඇති අතර එය හොඳින් ක්‍රියාත්මක වන බව පෙනේ.

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

-M පරාමිතිය පිළිබඳ වැඩි විස්තර මෙතැනින්


2
ඔටෝස් සඳහා +1, එය ටින් එකේ කියන දේ කරයි. ඕනෑම ආකාරයක කල් ඉකුත්වීම වැළැක්වීම සඳහා තබා ගත හැකි විලාසිතාවේ පැකට් යැවීම එහි ක්‍රියාකාරීත්වයේ කොටසක් බව මම විශ්වාස කරමි.
akent

31
autosshපිළිතුර භාවිතා කරමින් උදාහරණ උමග තැබිය හැකිද ?
එතේෂ් චෞද්රි

5
autossh -f -nNT -i ~/keypair.pem -R 2000:localhost:22 username@myoutsidebox.com දුරස්ථ පර්යන්තයක් නිර්මාණය නොකරන -nNT භාවිතයෙන් මම මෙය සකසා ඇති බව ඔබට පෙනෙනු ඇත, එවිට මට ස්වයංක්‍රීයව පසුබිමට දැමිය හැකිය, සහ -i විකල්පය .pem ගොනුවක් භාවිතා කිරීමට. ඔබ සෑම විටම සම්බන්ධතාවයක් විවෘතව තබා ගැනීමට යන්නේ නම්, අමතර සැකසුම හරහා යාමට මම අනිවාර්යයෙන්ම නිර්දේශ කරමි.
juckele

2
එය වටින දෙය සඳහා, -Mපරාමිතිය මඟ හැරීම
rinogo

2
ජාල වෙනස් කිරීම මත නැවත උත්සාහ කිරීම සඳහා මම මෙය කළෙමි, එය මට හොඳින් ක්‍රියාත්මක වේ: autossh -M 0 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 2" -L 9999: localhost: 19999 server@example.com
ලූක් ස්ටැන්ලි

41

යම් කාලයක් තිස්සේ එම සම්බන්ධතාවය සඳහා පැකට්ටුවක් නොදැකීමෙන් පසු සියලු රාජ්‍ය ෆයර්වෝලයන් සම්බන්ධතාවයක් අමතක කරයි (සම්බන්ධතාවය වසා නොගෙන කෙළවර දෙකම මිය ගිය තැන රාජ්‍ය වගු සම්බන්ධතාවලින් පිරී යාම වැළැක්වීම සඳහා). බොහෝ TCP ක්‍රියාත්මක කිරීම් අනෙක් පැත්තෙන් ඇසීමෙන් තොරව දීර් time කාලයකට පසු රඳවා තබා ගැනීමේ පැකට්ටුවක් යවනු ඇත (පැය 2 යනු පොදු අගයකි). කෙසේවෙතත්, රඳවා තබා ගැනීමේ පැකට් යැවීමට පෙර සම්බන්ධතාවය අමතක කරන රාජ්‍ය ෆයර්වෝලයක් තිබේ නම්, දිගුකාලීන නමුත් නිෂ්ක්‍රීය සම්බන්ධතාවයක් මිය යනු ඇත.

එය එසේ නම්, විසඳුම වන්නේ සම්බන්ධතාවය අක්‍රිය වීම වැළැක්වීමයි. OpenSSH හට ServerAliveInterval නමින් විකල්පයක් ඇත, එය සම්බන්ධතාවය අක්‍රිය වීම වැළැක්වීම සඳහා භාවිතා කළ හැකිය (ප්‍රසාද දීමනාවක් ලෙස, සම්බන්ධතාවය අක්‍රියව පැවතුනද සම වයසේ මිතුරන් මිය ගිය විට එය අනාවරණය වේ).


නිශ්චිතව දක්වා ඇති කාල පරතරය තත්පර කිහිපයකින් වන බැවින් ඔබට සුසර කළ හැකිය. ඔබගේ රාජ්ය ෆයර්වෝලයට මිනිත්තු 5 ක නිෂ්ක්‍රීය කල් ඉකුත් වීමක් තිබේ නම්, සම්බන්ධතාවය විවෘතව තබා ගැනීමට තත්පර 60 ක් හෝ 120 ක් ප්රමාණවත්ය. එය මගේ නිවාස රවුටරය හරහා මගේ ssh සැසි විවෘතව තබා ගත හැකි එක් ක්‍රමයකි.
ඩැරන් හෝල්

ස්තූතියි, මෙය උදව් විය. නමුත් සටහන (මෙහි පහළ ශ්‍රේණියේ පිළිතුරකින්, superuser.com/a/146641/115515 ) ඔබ සඳහන් කරන්නේ ServerAliveInterval මිස ServerAliveCountMax නොවේ නම්, ඔබට අවශ්‍ය ප්‍රමාණයට වඩා ඉක්මනින් ssh හිතාමතාම විසන්ධි වන බව ඔබට පෙනී යනු ඇත.
metamatt

4
@metamatt, ඔබ යොමු කරන පහළ ශ්‍රේණියේ පිළිතුර හොඳ හේතුවක් නිසා පහළ ශ්‍රේණියේ ඇත: එය වැරදිය.
ලැම්බාර්ට්

24

ඔබේම මැක් හෝ ලිනක්ස් යන්ත්‍රයකින් ඔබේ ssh වින්‍යාස කර සෑම මිනිත්තු 3 කට වරක් සේවාදායකය ssh සජීවීව තබා ගන්න. ටර්මිනලයක් විවෘත කර ඔබගේ අදෘශ්‍යමාන .ssh ඔබේ නිවසට යන්න:

cd ~/.ssh/ 

ඉන්පසු 1 පේළි වින්‍යාස ගොනුවක් සාදන්න:

echo "ServerAliveInterval 180" >> config

ඔබ ද එකතු කළ යුතුය:

ServerAliveCountMax xxxx (high number)

පෙරනිමිය 3 වන බැවින් ServerAliveInterval 180 මිනිත්තු 9 කට පසු යැවීම නවත්වනු ඇත (ServerAliveInterval විසින් නියම කරන ලද මිනිත්තු 3 ක කාල පරතරයෙන් 3).


2
ඔබට දැනටමත් වින්‍යාස ගොනුවක් තිබේ නම් ඔබේ විධානය නිර්දේශ නොකරන බව සලකන්න. යළි හරවා යැවීම සඳහා >> භාවිතා කිරීම වඩා හොඳ වනු ඇත!
පෙල්ටියර්

ඇයි ServerAliveInterval 180අපිට විනාඩි 6 ක් දෙන්නේ? ප්‍රතිභානය මට මෙය උත්සාහ කරයි : 180/60 == 3. ඉතින්, ServerAliveIntervalතත්පර 30 කින් ගුණ කළ හැකිද?
nemesisfixx

cmcnemesis: ServerAliveInterval 180 යනු මිනිත්තු 3 යි. ServerAliveCountMax පෙරනිමි 3 යන්නෙන් අදහස් වන්නේ එම කාල පරතරයන්ගෙන් 3 ක් වන බැවින් මිනිත්තු 9 යි.
metamatt

2
මම මෙම පිළිතුරට ඡන්දය දෙන්නේ ServerAliveCountMax ගැන සඳහන් කිරීම ගැන ස්තූතියි, සහ ඔබ ServerAliveCountMax නොමැතිව ServerAliveInterval නියම කළහොත් කුමක් සිදුවේද යන්නයි. නමුත් පෙර අදහස් දැක්වීම් මෙන්ම, "පසුව යැවීම නවත්වනු ඇත" පිළිබඳ ගණනය කිරීම වැරදියි, මම සිතන්නේ මෙම විකල්පයන් පිළිබඳ තොරතුරු ලබා දුන්නොත් මෙම පිළිතුර වඩා හොඳ වනු ඇත, ඒවා සීඩී සහ echo විධානයන් සමඟ යොදන ආකාරය අපට නොකියයි. .
metamatt

22
ServerVliveCountMax "ඉහළ අංකයකට" සැකසීම තේරුමක් නැති නිසා පහත හෙලීම. ServerAliveCountMax විසින් අත්හැර දැමීමට පෙර "keepalive" පණිවිඩය යැවීමට කොපමණ වාර ගණනක් උත්සාහ කරයිද යන්න නියම කරයි. පෙරනිමිය 3 වේ, එබැවින් ServerAliveInterval 180 සමඟ, මිනිත්තු 9 කට පසු සේවාදායකය ප්‍රතිචාර නොදක්වා ඇත්නම් එය යැවීම නවත්වනු ඇත, එවැනි අවස්ථාවකදී ඔබගේ සම්බන්ධතාවය හොඳින් හා සැබවින්ම මිය ගොස් ඇත.
ලැම්බාර්ට්

23

කලින් මිය ගිය විට නව ssh උමං මාර්ග දිගටම පවත්වා ගැනීමට මම පහත දැක්වෙන Bash ස්ක්‍රිප්ට් භාවිතා කර ඇත්තෙමි. ඔබට අවශ්‍ය නැති විට හෝ අතිරේක පැකේජ ස්ථාපනය කිරීමට හෝ සම්පාදක භාවිතා කිරීමට නොහැකි වූ විට ස්ක්‍රිප්ට් එකක් භාවිතා කිරීම පහසුය.

while true
do
  ssh <ssh_options> [user@]hostname
  sleep 15
done

සම්බන්ධතාවය ස්වයංක්‍රීයව ස්ථාපිත කිරීම සඳහා යතුරු ගොනුවක් අවශ්‍ය බව සලකන්න, නමුත් ස්වයංක්‍රීයව ද එය එසේ වේ.


2
ඔබ මෙම ස්ක්‍රිප්ට් එක ස්වයංක්‍රීයව භාවිතා කිරීමට හේතු කවරක් එකතු කළ යුතුද, නැතහොත් එය මේ ආකාරයෙන් පහසුද?
kyrias

4
Ssh ම කැටි වුවහොත් මෙය උදව් නොවනු ඇත, එසේ ද?
nafg

1
ඔබට සේවාදායකයේ දේවල් ස්ථාපනය කළ නොහැකි නම් එය උපකාරී වේ. ස්වයංක්‍රීයව පූර්ව ස්ථාපනය කර ඇති අතර නිලධරයන් සමහර විට එය ඉතා අවුල් සහගතය.
quarkex

1
ඔව්, දේවල් ස්ථාපනය නොකිරීමට වඩා සුදුසුය. දුරස්ථ යන්ත්‍රයකට ප්‍රවේශ විය හැකි එකම ක්‍රමය ලෙස මම වසරක් තිස්සේ මෙය කරමින් සිටිමි (නැවත පණගැන්වීමේදී එය ක්‍රියාත්මක කිරීමට ක්‍රොන්ටාබ් පවා සකසන්න). එය කිසි විටෙකත් අසාර්ථක නොවූ අතර වඩා වැදගත් වන්නේ එය කිසි විටෙකත් අසාර්ථක නොවන්නේ මන්දැයි මම දනිමි.
sudo

21

Systemd මේ සඳහා ඉතා සුදුසු ය.

/etc/systemd/system/sshtunnel.serviceඅඩංගු සේවා ගොනුවක් සාදන්න :

[Unit]
Description=SSH Tunnel
After=network.target

[Service]
Restart=always
RestartSec=20
User=sshtunnel
ExecStart=/bin/ssh -NT -o ServerAliveInterval=60 -L 5900:localhost:5900 user@otherserver

[Install]
WantedBy=multi-user.target

(ගැලපෙන පරිදි ssh විධානය වෙනස් කරන්න)

  • මෙය පරිශීලකයා ලෙස ක්‍රියාත්මක වන බැවින් පරිශීලකයා sshtunnelපළමුව සිටින බවට වග බලා ගන්න
  • systemctl enable sshtunnelආරම්භක වේලාවේදී එය ආරම්භ කිරීමට එය සැකසීමට නිකුත් කරන්න
  • systemctl start sshtunnelවහාම ආරම්භ කිරීමට නිකුත් කරන්න

යාවත්කාලීන කිරීම 2018 ජනවාරි : සමහර ඩිස්ට්‍රෝස් (උදා: ෆෙඩෝරා 27) විසින් එස්එස්එච් භාවිතා කිරීම වැළැක්වීම සඳහා SELinux ප්‍රතිපත්තිය භාවිතා කළ හැකිය.


2
මෙය මගේ සාරාංශයට බෙහෙවින් සමාන ය: gist.github.com/guettli/… ප්‍රතිපෝෂණය සාදරයෙන් පිළිගනිමු!
guettli

systemdපද්ධතියක් සඳහා විශිෂ්ටයි . යමෙක් භාවිතා කරන්නේ Restart=on-failureනම්, SSH සේවාදායකයා අතින් killing ාතනය කිරීමෙන් සාර්ථක ලෙස පිටවීමත් සමඟ SSH සේවාදායකයා ලෙස නැවත ආරම්භ කිරීම සිදු නොවේ.
ඩේවිඩ් ටොන්හෝෆර්

ඔබට තර්ක ලැයිස්තුවක් ExecStartසෑදීම සඳහා sshතර්කයක් ලෙස ලබා දී ඇති (bash) ස්ක්‍රිප්ට් එකකින් ssh ආරම්භ කිරීමට අවශ්‍ය නම් , මූලික චෙක්පත් යනාදිය කරන්න. ඉන්පසු එය ස්ක්‍රිප්ට් එකෙන් අමතන්න exec /bin/ssh -N .... මෙන්න මගේ ආ command exec /bin/ssh -N -oExitOnForwardFailure=Yes -oTCPKeepAlive=no -oServerAliveInterval=5 -oServerAliveCountMax=6 -i "${LOCAL_PRIVATE_KEY}" -L "${TUNNEL_INLET}:${TUNNEL_OUTLET}" "${REMOTE_USER}@${REMOTE_MACHINE}"TUNNEL_INLET="127.0.0.1:3307"TUNNEL_OUTLET="127.0.0.1:3306"
ාව

11

ඔබ සියල්ලන්ම ServerAliveCountMax වැරදි ලෙස අර්ථකථනය කරන බව මට පෙනේ. මම ලියකියවිලි තේරුම් ගත් පරිදි, එය සම්බන්ධතාවය අවසන් නොකර පිළිතුරු නොලැබෙන සේවාදායක සජීවී පණිවිඩ ගණන වේ. එබැවින් අප මෙහි සාකච්ඡා කරන්නේ වැනි අවස්ථාවන්හිදී, එය ඉහළ අගයකට සැකසීම මඟින් එල්ලෙන සම්බන්ධතාවයක් අනාවරණය කර නොගන්නා බවට සහතික වනු ඇත!

ෆයර්වෝලයක් සමඟ සම්බන්ධතාවය අමතක කිරීම සමඟ ඇති ගැටළුව විසඳීම සඳහා ServerAliveInterval සරලව සැකසීම ප්‍රමාණවත් විය යුතු අතර, ServerAliveCountMax අඩු මට්ටමක තැබීමෙන් ආරම්භක අවසානය අසාර්ථක බව දැකීමටත් සම්බන්ධතාවය කෙසේ හෝ අසමත් වුවහොත් අවසන් වීමටත් ඉඩ සලසයි.

ඔබට අවශ්‍ය වන්නේ, 1) සම්බන්ධතාවය සාමාන්‍ය තත්වයන් යටතේ ස්ථිරව විවෘතව පැවතීම, 2) සම්බන්ධතා අසමත් වීම සහ ආරම්භක පැත්ත අසාර්ථක වීමෙන් පිටවීම සහ 3) ssh විධානය සෑම විටම නැවත නිකුත් කිරීම සඳහා පිටවීම් (ඔබ එය කරන්නේ කෙසේද යන්න වේදිකාව මත රඳා පවතී, ජාවා විසින් යෝජනා කරන ලද “සත්‍යය” ස්ක්‍රිප්ට් එකකි, OS XI හි ඇත්ත වශයෙන්ම දියත් කරන ලද අයිතමයක් සකසා ඇත).


9

ServerAliveIntervalකල් ඉකුත් වූ NAT සැසි මගින් උමං ගැටළු ජනනය වන විට සෑම විටම SSH විකල්පය භාවිතා කරන්න .

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

  • ස්වයංක්‍රීය වැඩසටහන
  • bash script ( while true do ssh ...; sleep 5; done) නින්දේ විධානය ඉවත් නොකරන්න, sshඉක්මනින් අසමත් විය හැකි අතර ඔබ බොහෝ ක්‍රියාදාමයන්ට ප්‍රතිචාර දක්වනු ඇත
  • /etc/inittab, කොටුව වෙත වරාය ඉදිරියට යැවීමකින් තොරව, වෙනත් රටක නැව්ගත කර ස්ථාපනය කර ඇති පෙට්ටියකට ප්‍රවේශය ලබා ගැනීම සඳහා, ඔබට එය නැවත සකසා ගත හැකිය.

    tun1:2345:respawn:/usr/bin/ssh -i /path/to/rsaKey -f -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip 'sleep 365d'
    
  • උබුන්ටු හි ඉහළ පිටපත, /etc/inittabලබා ගත නොහැකි තැන :

    start on net-device-up IFACE=eth0
    stop on runlevel [01S6]
    respawn
    respawn limit 180 900
    exec ssh -i /path/to/rsaKey -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip
    post-stop script
        sleep 5
    end script
    

හෝ සෑම විටම ක්‍රම දෙකම භාවිතා කරන්න.


1
ඔබගේ සියලුම SSH සම්බන්ධතා සඳහා ඔබට එය අවශ්‍ය නොවන්නේ නම් +1 පේළිගත කිරීමේ විකල්පය සඳහා
user1146334

ඔබ ලියන්නේ "සම්බන්ධතාවය මුළුමනින්ම අඩුවුවහොත්". දැන් මට තේරෙන්නේ නැත, ස්වයංක්‍රීයව විසඳන්නේ කුමන ගැටළුද, සහ එය කුමක්ද? මම හිතුවා, ඇත්ත වශයෙන්ම, එය පැය කිහිපයක් සඳහා කේබලය ගලවා දැමීම වැනි ඕනෑම බිඳුණු සම්බන්ධතාවයක් ගැන බලා ගනීවි, නමුත් සමහර විට එසේ නොවේද?
මැඩ්ස් ස්කජර්න්

6

මම මේ සමඟ මෙම ගැටළුව විසඳුවා:

සංස්කරණය කරන්න

~/.ssh/config

එකතු කරන්න

ServerAliveInterval 15
ServerAliveCountMax 4

Ssh_config සඳහා man පිටුවට අනුව :

ServerAliveCountMax
         Sets the number of server alive messages (see below) which may be
         sent without ssh(1) receiving any messages back from the server.
         If this threshold is reached while server alive messages are
         being sent, ssh will disconnect from the server, terminating the
         session.  It is important to note that the use of server alive
         messages is very different from TCPKeepAlive (below).  The server
         alive messages are sent through the encrypted channel and there‐
         fore will not be spoofable.  The TCP keepalive option enabled by
         TCPKeepAlive is spoofable.  The server alive mechanism is valu‐
         able when the client or server depend on knowing when a connec‐
         tion has become inactive.

         The default value is 3.  If, for example, ServerAliveInterval
         (see below) is set to 15 and ServerAliveCountMax is left at the
         default, if the server becomes unresponsive, ssh will disconnect
         after approximately 45 seconds.  This option applies to protocol
         version 2 only.

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

සෑම තත්පර 15 කට වරක්ම සේවාදායකය පිං කිරීමට පෙනේ.
ලැම්බාර්ට්

Amb ලැම්බාර්ට් නමුත් සම්බන්ධතාවය සැබවින්ම දුර්වල නම් සහ බොහෝ විට සම්බන්ධතා අතහැර දමන්නේ නම්, එය අවම වශයෙන් මළ සම්බන්ධතාවයක් හඳුනාගෙන කලින් උත්සාහ කිරීමට අවස්ථාව ලබා දෙයි.
බින්කි

මැකෝස් 10.15.3
4F2E4A2E

4

ExitOnForwardFailure yesයනු අනෙක් යෝජනා වලට හොඳ අනුබද්ධයකි. එය සම්බන්ධ වී ඇති නමුත් වරාය ඉදිරියට යැවිය නොහැකි නම් එය ඔබට කිසිසේත්ම සම්බන්ධ නොවූවාක් මෙන් නිෂ් less ල ය.


මෙය ඉතා හොඳ අදහසකි. පෙර සම්බන්ධතාවය දේශීය සත්කාරකයට වඩා දුරස්ථ පැත්තෙන් කල් ඉකුත් වී ඇති බවක් පෙනේ නම් ස්වයංක්‍රීයව පවා නිෂ් less ල වේ, මන්ද මේ අවස්ථාවේ දී දේශීය සත්කාරක සමාගම නැවත සම්බන්ධ වීමට උත්සාහ කරනු ඇත, නමුත් වරාය තවමත් විවෘතව පවතින බැවින් ඉදිරියට යැවීම ස්ථාපිත කළ නොහැක.
රාවුල් සාලිනාස්-මොන්ටෙගුඩෝ

1

මට දිගු කාලීනව SSH- උමගක් නඩත්තු කිරීමේ අවශ්‍යතාවයක් තිබුණි. මගේ විසඳුම ලිනක්ස් සේවාදායකයකින් ක්‍රියාත්මක වූ අතර එය යතුරු මත පදනම් වූ සත්‍යාපනය භාවිතා කරමින් ssh ට ප්‍රතිචාර දක්වන කුඩා C වැඩසටහනකි.

එල්ලීම ගැන මට විශ්වාස නැත, නමුත් කාලය ඉක්මවා යාම නිසා මට උමං මාර්ග මිය ගොස් ඇත.

ප්‍රතිචාරකයා සඳහා කේතය ලබා දීමට මම කැමතියි, නමුත් මට දැන් එය සොයාගත නොහැක.


1

ඔටෝෂ් වැනි මෙවලම් ssh සැසිය නැවත ආරම්භ කිරීමට උපකාරී වන අතර ... මට සැබවින්ම ප්‍රයෝජනවත් වන්නේ 'තිර' විධානය ක්‍රියාත්මක කිරීමයි. ඔබ විසන්ධි කිරීමෙන් පසුව පවා ඔබේ ssh සැසි නැවත ආරම්භ කිරීමට එය ඉඩ දෙයි. ඔබේ සම්බන්ධතාවය විශ්වාසදායක නොවේ නම් විශේෂයෙන් ප්‍රයෝජනවත් වේ.

... මෙය ඔබට නිවැරදි නම් එය නිවැරදි පිළිතුර ලෙස සලකුණු කිරීමට අමතක නොකරන්න! ;-)


7
... නමුත් ප්‍රශ්නය වූයේ පර්යන්ත සැසියක් පමණක් නොව SSH උමං විවෘතව තබා ගන්නේ කෙසේද යන්නයි. තිරය ​​විශිෂ්ටයි!
akent

මම දැනටමත් තිරය භාවිතා කර ඇත, නමුත් එය මගේ ගැටලුව විසඳන්නේ නැත: - / ඔබගේ පිළිතුරට ස්තූතියි.
පෙල්ටියර්

1

ටිකක් හැක්, නමුත් මම මෙය තබා ගැනීමට තිරය භාවිතා කිරීමට කැමතියි. මා සතුව දැනට දුරස්ථ ඉදිරි ගමනක් ඇත, එය සති ගණනාවක් තිස්සේ ක්‍රියාත්මක වේ.

උදාහරණය, ​​දේශීයව ආරම්භ කිරීම:

screen
ssh -R ......

දුරස්ථ ඉදිරියට යොදන විට සහ දුරස්ථ පරිගණකයේ ඔබට කවචයක් තිබේ නම්:

screen
Ctrl + a + d

ඔබට දැන් අඛණ්ඩ දුරස්ථ ඉදිරි ගමනක් තිබේ. උපක්‍රමය නම් දෙපැත්තේම තිරය ධාවනය කිරීමයි


1

මෑතකදී මෙම ගැටලුව මා විසින්ම ඇති කර ගෙන ඇති අතර, මෙම විසඳුම් මඟින් ඔබ මුරපද පිවිසුමක් භාවිතා කරන්නේ නම් සෑම අවස්ථාවකදීම මුරපදය නැවත ඇතුළත් කළ යුතු බව මම ඉල්ලා සිටිමි.

වෙනත් කෙනෙකුට එකම ප්‍රශ්නයක් ඇත්නම් මෙම විසඳුම පිළිබඳ මගේ විසඳුම බෙදා ගැනීමට සිතුවෙමි:

#!/bin/bash
read -s -p "Password: " pass
while true
do
    sshpass -p "$pass" ssh user@address -p port
    sleep 1
done

0

මගේ කලින් අයිඑස්පී සමඟ මට සමාන ගැටළු ඇති විය. ඕනෑම ටීසීපී සම්බන්ධතාවයක්, වෙබ් අඩවි නැරඹීම හෝ තැපැල් යැවීම සම්බන්ධයෙන් මට එය එසේම විය.

විසඳුම වූයේ UDP හරහා VPN සම්බන්ධතාවයක් වින්‍යාස කිරීමයි (මම භාවිතා කළේ OpenVPN). විසන්ධි වීමට හේතු වන ඕනෑම දෙයකට මෙම සම්බන්ධතාවය වඩාත් ඉවසා දරා ඇත. එවිට ඔබට මෙම සම්බන්ධතාවය හරහා ඕනෑම සේවාවක් ක්‍රියාත්මක කළ හැකිය.

සම්බන්ධතාවයේ ගැටළු තවමත් පැවතිය හැකි නමුත් උමග වඩාත් ඉවසිලිවන්ත බැවින් ඕනෑම ssh සැසියක් විසන්ධි වීමට වඩා කෙටි කාලයක් රඳවා තබා ගනී.

මෙය සිදු කිරීම සඳහා ඔබට ඔබේම සේවාදායකයක් තුළ සැකසිය හැකි VPN සේවාවක් මාර්ගගතව අවශ්‍ය වේ.


0

ලෙස autossh: අපේ අවශ්යතා සපුරන්නේ නැත (එය ඉතා පළමු වරට සේවාදායකය වෙත සම්බන්ධ විය හැකි නම්, එය වරදක් පවතී), අපි පිරිසිදු bash අයදුම් ලියා තිබෙනවා https://github.com/aktos-io/link- සේවාදායකය සමඟ

එය පෙරනිමියෙන් සේවාදායකයේ NODE හි sshd port (22) සඳහා ප්‍රතිලෝම උමගක් නිර්මාණය කරයි. ඔබට වෙනත් ක්‍රියා සිදු කිරීමට අවශ්‍ය නම් (අතිරේක වරායන් යොමු කිරීම, සම්බන්ධතාවයට තැපැල් යැවීම වැනි ...) ඔබට ඔබේ ස්ක්‍රිප්ට් on-connectසහ on-disconnectෆෝල්ඩර තැබිය හැකිය .


0

tmuxඔබේ දුරස්ථ සේවාදායකයේ විධානය භාවිතා කළ හැකිය . ඔබේ දුරස්ථ කේතය ධාවනය කරන දුරස්ථ යන්ත්‍රයේ "සැසියක්" විවෘත කිරීමට එය ඔබට ඉඩ දෙයි.

ඔබගේ tmuxසැසිය තුළ ඔබේ කේතය ආරක්ෂිතව ක්‍රියාත්මක වන බවට කරදර නොවී ඔබට දුරස්ථ යන්ත්‍රයෙන් පිටවීමට (හෝ ඔබගේ නඩුවේ සම්බන්ධතාවය නැති වීමට) හැකිය.

අවසාන වශයෙන්, ඔබ දුරස්ථ සේවාදායකයේ නැවත සම්බන්ධ වන විට, ඔබට නැවත tmux attachපැමිණිය යුත්තේ ඔබ කලින් විවෘත කළ සැසියට පමණි.

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.