কীভাবে নির্ভরযোগ্যভাবে একটি এসএসএইচ টানেলটি খোলা রাখবেন?


234

আমি বিভিন্ন আইডোটিক ফায়ারওয়াল ঘুরে দেখার জন্য কাজ থেকে একটি এসএসএইচ টানেল ব্যবহার করি (এটি আমার বসের সাথে ঠিক আছে :))। সমস্যাটি হচ্ছে, কিছুক্ষণ পরে ssh সংযোগটি সাধারণত স্তব্ধ হয়ে যায় এবং সুড়ঙ্গটি ভেঙে যায়।

আমি যদি কমপক্ষে টানেলটি স্বয়ংক্রিয়ভাবে নিরীক্ষণ করতে পারি, তবে টানেলটি স্তব্ধ হয়ে গেলে পুনরায় চালু করতে পারতাম, তবে এটি করার কোনও উপায় আমি এখনও পাইনি।

যিনি আমার এসএসএস সংযোগটি ঝুলন্ত থেকে কীভাবে রোধ করতে পারেন তার জন্য বোনাস পয়েন্টস!


নিষ্ক্রিয়তার কারণে এটি আপনার টানেলটি মারা গেছে? আমার ফোন থেকে বন্দরগুলি সুড়ঙ্গ করার সময় আমার এই সমস্যা হয়েছিল তাই আমি শেষ অবধি watch: যেমন কমান্ডটি ব্যবহার করে এটি "জীবিত" করার জন্য সংযোগে ডামি কমান্ডগুলি তৈরি করলাম watch -n1 60 echo "wiiiii"। নেটওয়ার্কটি ভাঙা না হওয়া বা আপনি এটি ব্যবহার না করা হলে টানেলটি মারা যাবে না।
erm3nda

উত্তর:


280

শব্দ শুনে মনে হচ্ছে আপনার যা দরকার autossh । এটি একটি ssh টানেল নিরীক্ষণ করবে এবং এটি প্রয়োজন হিসাবে এটি পুনরায় আরম্ভ করবে। আমরা এটি কয়েক বছর ধরে ব্যবহার করেছি এবং এটি ভালভাবে কাজ করছে বলে মনে হচ্ছে।

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

এখানে -M প্যারামিটার সম্পর্কে আরও বিশদ


2
অটোশের জন্য +1, এটি টিনে যা বলে তা করে। আমি বিশ্বাস করি যে এর কার্যকারিতাটির একটি অংশ হ'ল কোনও ধরণের সময়সীমা রোধ করতে ক্যাপ-লাইভ স্টাইলের প্যাকেট প্রেরণ করা।
একেন্ট

30
আপনি autosshউত্তর ব্যবহার করে উদাহরণ টানেল রাখতে পারেন ?
এহতেশ চৌধুরী

5
autossh -f -nNT -i ~/keypair.pem -R 2000:localhost:22 username@myoutsidebox.com আপনি লক্ষ্য করতে পারেন যে আমি এটি -nNT ব্যবহার করে সেট আপ করেছি যা কোনও দূরবর্তী টার্মিনাল তৈরি করে না যাতে আমি পটভূমিতে অটোশ রাখতে পারি এবং এস.এইচ.এইচ। পিএম ফাইল ব্যবহার করার জন্য -i বিকল্পটি ব্যবহার করতে পারি। আপনি যদি সারাক্ষণ কোনও সংযোগ খোলা রাখেন, আমি অবশ্যই অতিরিক্ত সেটআপটি দিয়ে যাওয়ার পরামর্শ দিই।
juckele

2
এটির মূল্য কীসের জন্য এটি দেখতে -Mপরামিতিটি বাদ দেওয়া ভাল বলে মনে হচ্ছে : bugs.debian.org/cgi-bin/bugreport.cgi?bug=351162
rinogo

2
নেটওয়ার্ক পরিবর্তনের বিষয়ে এটি পুনরায় চেষ্টা করার জন্য আমি এটি করেছি, এটি আমার পক্ষে ভাল কাজ করে: অটোশ-এম 0 -o "সার্ভারআলাইভআইন্টারভাল 10" -ও "সার্ভারআলাইভাক্যান্ট ম্যাক্স 2" -ল 9999: লোকালহোস্ট: 19999 server@example.com
লূক স্ট্যানলি

39

সমস্ত রাষ্ট্রীয় ফায়ারওয়াল কিছুক্ষণের জন্য সেই সংযোগের জন্য কোনও প্যাকেট না দেখে কোনও সংযোগটি ভুলে যায় (রাষ্ট্রের টেবিলগুলিকে সংযোগ পূর্ণ হতে বাধা দিতে যেখানে উভয় প্রান্তটি সংযোগ বন্ধ না করেই মারা যায়)। বেশিরভাগ টিসিপি বাস্তবায়নগুলি অপর পক্ষের কাছ থেকে না শুনে দীর্ঘক্ষণ পরে একটি রক্ষণশীল প্যাকেট পাঠাবে (২ ঘন্টা একটি সাধারণ মূল্য)। তবে, যদি কোনও রাষ্ট্রীয় ফায়ারওয়াল থাকে যা রক্ষণশীল প্যাকেটগুলি প্রেরণের আগে সংযোগটি ভুলে যায়, একটি দীর্ঘজীবী তবে নিষ্ক্রিয় সংযোগটি মারা যাবে।

যদি এটি হয় তবে সমাধানটি হ'ল সংযোগটি নিষ্ক্রিয় হওয়া থেকে রোধ করা। ওপেনএসএইচ-এর সার্ভারআলভইন্টারওয়াল নামে একটি বিকল্প রয়েছে যা সংযোগটি দীর্ঘকাল অচল থেকে আটকাতে ব্যবহার করা যেতে পারে (একটি বোনাস হিসাবে, এটি সংযোগটি নিষ্ক্রিয় থাকলেও শীঘ্রই মারা যাওয়ার সময় এটি সনাক্ত করবে)।


নির্দিষ্ট ব্যবধানটি সেকেন্ডে হয়, তাই আপনি কিছু সূক্ষ্ম সুরদান সরবরাহ করতে পারেন। যদি আপনার স্টেটফুল ফায়ারওয়ালের 5 মিনিটের অলস সময়সীমা থাকে তবে সংযোগটি খোলা রাখতে 60 বা 120 সেকেন্ডই যথেষ্ট। আমি আমার হোম রাউটারের মাধ্যমে আমার ssh সেশনগুলি খোলা রাখার একটি উপায়।
ড্যারেন হল 21

ধন্যবাদ, এটি সাহায্য করেছে। তবে দ্রষ্টব্য (এখানে নিম্ন-স্থানের উত্তর থেকে, superuser.com/a/146641/115515 ) যে আপনি যদি সার্ভারআলাইভআইন্টারওয়াল নির্দিষ্ট করে এবং সার্ভারআলাইভাউন্টম্যাক্স না করে, আপনি ssh ইচ্ছাকৃতভাবে সংযোগ বিচ্ছিন্ন করতে চাইতে পারেন যত তাড়াতাড়ি আপনি চান than
মেটামেট

4
@ মেটাম্যাট, আপনার উল্লেখ করা নিম্ন-অবস্থানের উত্তরটি হ'ল কারণের কারণে নিম্ন-স্থানে রয়েছে: এটি ভুল।
ল্যাম্বার্ট

24

আপনার নিজের ম্যাক বা লিনাক্স মেশিনে আপনার এসএসএসটি কনফিগার করে প্রতি 3 মিনিটে সার্ভারের এসএসকে বাঁচিয়ে রাখুন। একটি টার্মিনাল খুলুন এবং আপনার বাড়িতে আপনার অদৃশ্য। এসএসএস করুন:

cd ~/.ssh/ 

তারপরে একটি 1 লাইন কনফিগার ফাইল তৈরি করুন:

echo "ServerAliveInterval 180" >> config

আপনারও যোগ করা উচিত:

ServerAliveCountMax xxxx (high number)

ডিফল্টটি 3 হয় তাই সার্ভারআলাইভআইন্টারওয়াল 180 9 মিনিটের পরে (সার্ভারলাইভইন্টারওয়াল দ্বারা নির্দিষ্ট 3-মিনিটের ব্যবধানের 3) পরে প্রেরণ বন্ধ করবে।


2
মনে রাখবেন যে আপনার কমান্ডটি ইতিমধ্যে কোনও কনফিগার ফাইল থাকলে প্রস্তাবিত নয়। পুনঃনির্দেশের জন্য >> ব্যবহার করা আরও অনেক ভাল!
পেলটিয়ার

ServerAliveInterval 180আমাদের 6 মিনিট সময় দেয় কেন ? স্বজ্ঞা আমাকে এই চেষ্টা করে তোলে: 180/60 == 3। সুতরাং, ServerAliveInterval30 সেকেন্ডের গুণমানে কাজ করে?
nemesisfixx

@ এমকনেমেসিস: সার্ভারআলাইভইন্টারভাল 180 মানে 3 মিনিট। 3 এর সার্ভারআলাইভকাউন্টম্যাক্স ডিফল্ট মানে 3 টি অন্তর 3, তাই 9 মিনিট।
মেটামেট

2
আমি এই উত্তরটি ভোটাভুটি করছি কারণ সার্ভারআলাইভকাউন্টম্যাক্স উল্লেখ করার জন্য ধন্যবাদ, এবং যদি আপনি সার্ভারআলাইভকন্টম্যাক্স ছাড়াই সার্ভারআলভইন্টারওয়াল নির্দিষ্ট করেন তবে কি হবে। তবে পূর্ববর্তী মন্তব্যের মতো আমিও লক্ষ্য করেছি যে "পরে পাঠানো বন্ধ হবে" এর গণনাটি ভুল, এবং আমি মনে করি যে এই উত্তরটি যদি কেবল এই বিকল্পগুলির উপর তথ্য দেয় তবে সিডি এবং প্রতিধ্বনি কমান্ড প্রয়োগ করে কীভাবে সেগুলি প্রয়োগ করতে হবে তা আমাদের জানান না ।
মেটামেট

20
ডাউনভোটিং কারণ এটি সার্ভারআলাইভকাউন্টম্যাক্সকে একটি "উচ্চ সংখ্যায়" সেট করার কোনও মানে করে না। সার্ভারআলাইভকাউন্টম্যাক্স নির্দিষ্ট করে দেয় যে কতক্ষণ ছাড় দেওয়ার আগে "কীপালাইভ" বার্তাটি প্রেরণের চেষ্টা করবে। ডিফল্টটি 3, তাই সার্ভারআলভইন্টারওয়াল 180 এর সাথে, 9 মিনিটের পরে যদি সার্ভারটি জবাব না দেওয়া থাকে তবে এটি কেবলমাত্র পাঠানো বন্ধ করবে, যার ক্ষেত্রে আপনার সংযোগটি সম্ভবত ভাল এবং সত্যই মারা গেছে।
লাম্বার্ট

22

পূর্ববর্তীটি মারা গেলে আমি নতুন এসএসএস টানেল তৈরি করতে নীচের বাশ স্ক্রিপ্টটি ব্যবহার করেছি। অতিরিক্ত প্যাকেজ ইনস্টল করতে বা সংকলক ব্যবহার করতে না চাইলে স্ক্রিপ্ট ব্যবহার করা সহজ।

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

নোট করুন যে সংযোগটি স্বয়ংক্রিয়ভাবে প্রতিষ্ঠিত করতে এটির জন্য একটি কিফিলের প্রয়োজন তবে অটোশের ক্ষেত্রেও এটি।


2
আপনি এই স্ক্রিপ্টটি অটোশের মাধ্যমে ব্যবহার করতে চাইলে কোনও কারণ যুক্ত করা উচিত, না কেবল এই পথটি আরও সহজ?
কিরিয়াস

4
এই সাহায্য করবে না যদি ssh নিজেই জমে যায়, তাই না?
এনএফজি

1
আপনি সার্ভারে জিনিসগুলি ইনস্টল করতে না পারলে এটি সহায়তা করে। অটোশ প্রাক-ইনস্টল করা হয় না এবং বিউরোক্রেসি এটি কখনও কখনও খুব অবসন্নতা হয়।
কোয়ারেক্সেক্স

হ্যাঁ, জিনিসগুলি ইনস্টল না করাই ভাল। দূরবর্তী মেশিনটিকে অ্যাক্সেসযোগ্য রাখার একমাত্র উপায় হিসাবে আমি এক বছর ধরে এটি করে চলেছি (এমনকি এটি পুনরায় বুট করার জন্য ক্রোনট্যাব সেট করুন)। এটি কখনই ব্যর্থ হয় না, এবং আরও গুরুত্বপূর্ণ, আমি জানি যে এটি কখনই ব্যর্থ হবে না।
sudo

16

সিস্টেমড আদর্শভাবে এটির জন্য উপযুক্ত।

সমন্বিত একটি পরিষেবা ফাইল তৈরি করুন /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) এসএসএইচটিকে সিস্টেমড থ্রিম থেকে রোধ করতে সেলইনাক্স নীতি ব্যবহার করতে পারে, সেক্ষেত্রে প্রয়োজনীয় অব্যাহতি প্রদানের জন্য একটি কাস্টম নীতি তৈরি করা প্রয়োজন।


2
এটি আমার টাকারের সাথে খুব মিল দেখাচ্ছে: gist.github.com/guettli/… মতামত স্বাগত!
guettli

একটি systemdসিস্টেমের জন্য দুর্দান্ত। যদি কেউ ব্যবহার করে Restart=on-failureতবে ম্যানুয়ালি এসএসএইচ ক্লায়েন্টকে হত্যা করার ফলে সাফল্যের সাথে প্রস্থান সহ এসএসএইচ ক্লায়েন্ট হিসাবে পুনরায় আরম্ভ হবে না।
ডেভিড টোনহোফার

যদি আপনি ExecStartউদাহরণ হিসাবে sshআর্গুমেন্টের তালিকাটি তৈরি করতে , বেসিক চেক ইত্যাদি করতে চান তবে কোনও (বাশ) স্ক্রিপ্ট থেকে ssh শুরু করতে চান তবে স্ক্রিপ্ট থেকে এটি কল করুন exec /bin/ssh -N ...। এখানে আমার আদেশটি: 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"
ডেভিড টোনহোফার

10

এটি নিশ্চিতভাবে আমার কাছে দেখে মনে হচ্ছে যে আপনি সকলেই সার্ভারআলিভকাউন্টম্যাক্সের ভুল ব্যাখ্যা করছেন। আমি যেমন ডক্সটি বুঝতে পারি, এটি সার্ভার জীবন্ত বার্তাগুলির সংখ্যা যা সংযোগটি বন্ধ না করেই উত্তরহীন হয়ে যেতে পারে। সুতরাং আমরা এখানে আলোচনা করার মতো ক্ষেত্রে, এটি একটি উচ্চ মূল্যে সেট করা ঠিক নিশ্চিত করবে যে একটি ঝুলন্ত সংযোগ সনাক্ত এবং শেষ হবে না!

কেবল সংযোগটি ভুলে ফায়ারওয়াল দিয়ে সমস্যাটি সমাধান করার জন্য সার্ভারআলভইন্টারওয়ালাকে সেট করার পক্ষে পর্যাপ্ত পরিমাণে হওয়া উচিত এবং সার্ভারআলাইকাউন্টম্যাক্সকে কম রেখেই সংযোগটি যে কোনওভাবে ব্যর্থ হলে তার ব্যর্থতাটি লক্ষ্য করে শেষ করে দিতে পারে।

আপনি যা চান তা হ'ল, ১) সাধারণ পরিস্থিতিতে সংযোগ স্থায়ীভাবে খোলা থাকার জন্য, ২) সংযোগ ব্যর্থতা সনাক্তকরণের জন্য এবং ব্যর্থতায় বেরিয়ে আসার মূল দিকটি এবং ৩) এসএসএস কমান্ড প্রতিবারই পুনরায় জারি করার জন্য প্রস্থান করে (আপনি এটি কীভাবে করবেন প্ল্যাটফর্ম নির্ভর, জবা দ্বারা প্রস্তাবিত "সত্য" স্ক্রিপ্টটি ওএস ইলেভেনের আসলে একটি লঞ্চ করা আইটেমটি সেটআপ করার এক উপায়)।


9

ServerAliveIntervalটানেলের সমস্যাগুলি মেয়াদোত্তীর্ণ এনএটি সেশনগুলির দ্বারা উত্পন্ন হওয়ার ক্ষেত্রে সর্বদা এসএসএইচ বিকল্পটি ব্যবহার করুন ।

সংযোগটি পুরোপুরি হ্রাস পাওয়ার ক্ষেত্রে সর্বদা একটি শ্বাসনদীপন পদ্ধতি ব্যবহার করুন, আপনার এখানে কমপক্ষে তিনটি বিকল্প রয়েছে:

  • অটোশ প্রোগ্রাম
  • বাশ স্ক্রিপ্ট ( while true do ssh ...; sleep 5; done) স্লিপ কমান্ডটি সরিয়ে না দেয়, sshদ্রুত ব্যর্থ হতে পারে এবং আপনি অনেক বেশি প্রক্রিয়া পুনরায় সাড়াতে পারেন
  • /etc/inittab, বাক্সে পোর্ট ফরওয়ার্ড না করে, NAT এর পিছনে অন্য দেশে শিপড এবং ইনস্টল করা একটি বক্সে অ্যাক্সেস পেতে, আপনি আপনার কাছে ফিরে এসএসএস টানেল তৈরি করতে এটি কনফিগার করতে পারেন:

    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
আপনার সমস্ত এসএসএইচ সংযোগের জন্য যদি আপনি এটি না চান সে ক্ষেত্রে ইনলাইন বিকল্পের জন্য +1
ব্যবহারকারী 1146334

আপনি লিখুন "যদি কানেক্টিভিটি পুরোপুরি নেমে যায়"। এখন আমি বুঝতে পারি না, অটোশ কী সমস্যাগুলি নিজেই ঠিক করে দেয় এবং কী করে না? আমি ভেবেছিলাম, অবশ্যই এটি কোনও ভাঙা সংযোগের যত্ন নেবে, যেমন কয়েক ঘন্টা তারের প্লাগ লাগানোর মতো, তবে সম্ভবত তা নয়?
ম্যাডস স্কজার্ন

6

আমি এই দিয়ে এই সমস্যাটি সমাধান করেছি:

সম্পাদন করা

~/.ssh/config

এবং যোগ করুন

ServerAliveInterval 15
ServerAliveCountMax 4

Ssh_config এর জন্য ম্যান পৃষ্ঠা অনুসারে :

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 সেকেন্ডে সার্ভারটি পিং করার জন্য প্রায়শই মনে হয়।
লাম্বার্ট

@ লাম্বার্ট কিন্তু যদি সংযোগটি সত্যিই অদৃশ্য থাকে এবং সংযোগগুলি প্রায়শই ড্রপ করে তবে এটি কমপক্ষে একটি মৃত সংযোগ সনাক্ত করে এবং পূর্বে পুনরায় চেষ্টা করার সুযোগ দেয়।
বিনকি

4

ExitOnForwardFailure yesঅন্যান্য পরামর্শগুলিতে একটি ভাল সংযুক্তি। যদি এটি সংযুক্ত হয় তবে পোর্ট ফরওয়ার্ডিং স্থাপন করতে না পারে এটি আপনার কাছে ঠিক ততই অকেজো if


এটি একটি খুব ভাল ধারণা। এমনকি পূর্ববর্তী সংযোগটি স্থানীয় হোস্টের তুলনায় দূরবর্তী পার্শ্বে সময়সীমার হিসাবে চিহ্নিত হওয়ার পরেও অটোশ অকেজো।
রাউল সালিনাস-মন্টেইগুডো

1

আমার দীর্ঘমেয়াদী এসএসএইচ-টানেল বজায় রাখা দরকার ছিল। আমার সমাধানটি একটি লিনাক্স সার্ভার থেকে চলছিল, এবং এটি কেবলমাত্র একটি ছোট সি প্রোগ্রাম যা কী-ভিত্তিক প্রমাণীকরণ ব্যবহার করে এসএসএস-কে পুনঃস্থাপন করে।

আমি ঝুলন্ত সম্পর্কে নিশ্চিত নই, তবে সময় শেষ হওয়ার কারণে আমার টানেলগুলি মারা গিয়েছিল।

আমি রেসপন্সকারীটির জন্য কোড সরবরাহ করতে চাই, তবে আমি এখনই এটি খুঁজে পাচ্ছি না।


1

যখন অটোশের মতো সরঞ্জাম রয়েছে যা ssh সেশনটি পুনঃসূচনা করতে সহায়তা করে ... যা আমি সত্যিই দরকারী বলে মনে করি তা হল 'স্ক্রিন' কমান্ড চালানো। এটি আপনাকে সংযোগ বিচ্ছিন্ন করার পরেও আপনার ssh সেশনগুলি পুনরায় শুরু করতে দেয়। বিশেষত কার্যকর যদি আপনার সংযোগটি যেমন হওয়া উচিত তেমন নির্ভরযোগ্য না হয়।

... চিহ্নিত করতে ভুলবেন না এটি 'সঠিক' উত্তর যদি এটি আপনাকে কে সাহায্য করে! ;-)


7
... তবে প্রশ্নটি কীভাবে কেবলমাত্র টার্মিনাল অধিবেশন নয়, এসএসএইচ টানেলগুলি কীভাবে খোলা রাখা যায় সে সম্পর্কে ছিল। স্ক্রিন দুর্দান্ত যদিও!
একটেন্ট

আমি ইতিমধ্যে পর্দা ব্যবহার করেছি, তবে এটি আমার সমস্যার সমাধান করে না: - / যদিও আপনার উত্তরের জন্য ধন্যবাদ।
পেলটিয়ার

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

আমার আগের আইএসপি নিয়ে আমারও একই সমস্যা ছিল। আমার কাছে এটি কোনও টিসিপি সংযোগ, ওয়েবসাইট পরিদর্শন বা মেল প্রেরণের ক্ষেত্রে একই ছিল।

সমাধানটি ছিল ইউডিপি-র মাধ্যমে একটি ভিপিএন সংযোগটি কনফিগার করা (আমি ওপেনভিপিএন ব্যবহার করছিলাম)। এই সংযোগটি সংযোগ বিচ্ছিন্ন হওয়ার কারণেই বেশি সহনশীল ছিল। তারপরে আপনি এই সংযোগের মাধ্যমে যে কোনও পরিষেবা চালাতে পারবেন।

সংযোগ নিয়ে এখনও সমস্যা থাকতে পারে তবে যেহেতু টানেলটি আরও সহনশীল হবে কোনও সংযোগ অধিবেশন সংযোগ বিচ্ছিন্ন হওয়ার পরিবর্তে একটি সংক্ষিপ্ত হোল্ডআপ অনুভব করবে।

এটি করার জন্য আপনার একটি অনলাইন ভিপিএন পরিষেবা প্রয়োজন যা আপনি নিজের সার্ভারে সেটআপ করতে পারেন।


0

যেমনটি autosshআমাদের প্রয়োজনগুলি পূরণ করে না (এটি ত্রুটির সাথে উপস্থিত রয়েছে যদি এটি প্রথম প্রচেষ্টায় সার্ভারের সাথে সংযোগ না করতে পারে), আমরা খাঁটি বাশ অ্যাপ্লিকেশন লিখেছি: https://github.com/aktos-io/link- সঙ্গে-সার্ভার

এটি ডিফল্টরূপে সার্ভারে NODE এর sshd পোর্ট (22) এর জন্য একটি বিপরীত সুড়ঙ্গ তৈরি করে। আপনার যদি অন্য কোনও ক্রিয়া সম্পাদনের দরকার হয় (যেমন অতিরিক্ত পোর্ট ফরওয়ার্ড করা, সংযোগে মেলগুলি প্রেরণ করা ইত্যাদি) আপনি নিজের স্ক্রিপ্ট on-connectএবং on-disconnectফোল্ডার স্থাপন করতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.