আমি কীভাবে আমার এসএসএইচ সেশনগুলিকে হিমশীতল থেকে রক্ষা করতে পারি?


66

আমার কাছে রয়েছে ServerAliveIntervalএবং কয়েকটি মেশিনের ক্ষেত্রে ClientAliveIntervalএসএসএইচ ক্লায়েন্ট / সার্ভার কনফিগারেশন ফাইলগুলিতেও 540 সেট করা আছে (আমি মনে করি এটির তুলনায় এটি আরও ভাল সেট করা ভাল ধারণা হবে না)। আমি অনেকগুলি এসএসএইচ সেশন নিয়ে কাজ করি যা বর্তমানে কয়েক মিনিটের পরে জমা হয়।

আমি কীভাবে এটি ঠিক করতে পারি? আমি যা চাই তা হ'ল স্থায়ী না হওয়ার জন্য একটি অধিবেশন রাখা, যাতে আমি যদি 8 এ একটি সেশন খোলাম এবং এটি 4 ঘন্টা ব্যবহার না করি, উদাহরণস্বরূপ, আবার লগ ইন না করে পুনরায় 12 এ পুনরায় ব্যবহার করা ।


আপনি বর্তমানে আর কতক্ষণ লগইন থাকতে পারবেন (ধরে নিবেন এটি নেটওয়ার্ক সংযোগের কারণে নয়)? TCPKeepAlive yes?
আইরিন

আমি নিশ্চিত না তবে 10 মিনিট সর্বাধিক হিসাবে. হিসাবে হিসাবে TCPKeepAlive yes- মেশিনের উপর নির্ভর করে।
সিন্ট্যাগমা

11
শুধু মোশ ব্যবহার করবেন ?
vi।

1
বা আপনি ব্যবহার করতে পারেন autossh...
থোরিয়ামবিআর

আমি বলতে চাই যে কোনও সংযোগটি 4 ঘন্টা খোলা রাখা একটি সুরক্ষা উদ্বেগ এবং এর screenপরিবর্তে আপনার ব্যবহার করা উচিত । তবে আমি আপনার প্রশ্নটি এখনও সমর্থন করছি কারণ আমি এক মিনিট বা দু'বার পরে একই সমস্যাটি অনুভব করছি।
ডেল অ্যান্ডারসন

উত্তর:


80

আপনি যে পরিবর্তনগুলি করেছেন /etc/ssh/ssh_configএবং /etc/ssh/sshd_configতা সঠিক, তবুও তার কোনও প্রভাব পড়বে না।

আপনার কনফিগারেশনটি কাজ করতে, ক্লায়েন্টে এই কনফিগারেশন পরিবর্তন করুন:

/etc/ssh/ssh_config

Host *
ServerAliveInterval 100

সার্ভারআলভইন্টারওয়াল ক্লায়েন্ট সংযোগটি টিকিয়ে রাখতে প্রতি 100 সেকেন্ডে নাল প্যাকেট সার্ভারে প্রেরণ করবে

NULL প্যাকেট ক্লায়েন্টের কাছে সার্ভারের মাধ্যমে প্রেরণ করা হয়। একই প্যাকেট ক্লায়েন্ট দ্বারা সার্ভারে প্রেরণ করা হয়। একটি টিসিপি নুল প্যাকেটে SYN, ACK, FIN ইত্যাদির মতো কোনও নিয়ন্ত্রণকারী পতাকা নেই কারণ সার্ভারের ক্লায়েন্টের কাছ থেকে কোনও উত্তর প্রয়োজন হয় না। NULL প্যাকেটটি এখানে বর্ণিত হয়েছে: https://tools.ietf.org/html/rfc6592

তারপরে সার্ভারে sshd অংশটি কনফিগার করুন।

/etc/ssh/sshd_config

ClientAliveInterval 60
TCPKeepAlive yes
ClientAliveCountMax 10000

ClientAliveInterval সার্ভার ক্লায়েন্ট করার জন্য একটি নাল প্যাকেট পাঠানোর আগে 60 সেকেন্ড অপেক্ষা করতে হবে সংযোগ টিকিয়ে রাখার জন্য

টিসিপিকিপএলাইভ নির্দিষ্ট ফায়ারওয়ালগুলি নিষ্ক্রিয় সংযোগগুলি না ফেলে তা নিশ্চিত করার জন্য রয়েছে কি?

ক্লায়েন্টের কাছ থেকে কোনও বার্তা না পেয়েও ক্লায়েন্টএলইভকাউন্টম্যাক্স সার্ভার ক্লায়েন্টকে জীবন্ত বার্তা প্রেরণ করবে।

অবশেষে পুনরায় চালু করুন ssh server

service ssh restart বা service sshd restartআপনি কোন সিস্টেমে আছেন তার উপর নির্ভর করে।


আমি মনে করি ServerAliveCountMaxএটি যথাসম্ভব নির্ভরযোগ্য হওয়ার জন্য একটি উচ্চতর প্রয়োজনও বটে। যদি উভয় ServerAliveIntervalএবং ClientAliveIntervalযথেষ্ট কম নির্ধারণ করা হয়, আমি মনে করি কোন প্রয়োজন থাকবে না TCPKeepAlive। অতিরিক্তভাবে, যদি কোনও মিডলবক্স থাকে তবে পূর্বের উল্লিখিত সমস্ত সেটিংস হুবহু সঠিকভাবে কনফিগার করা থাকলেও তারা রাষ্ট্র হারাতে পারে। এটি এমপিটিসিপি ব্যবহার করতে সহায়তা করতে পারে (যদি ক্লায়েন্ট এবং সার্ভার উভয়ই এটি সমর্থন করে)।
ক্যাস্পারড

আপনি ক্লায়েন্ট সাইড বা সার্ভার সাইডের কনফিগারেশন বলতে চাইছেন কিনা তা শুরুতেই পরিষ্কার নয় (শেষ পর্যন্ত আমি উপসংহারে পৌঁছেছি, ক্লায়েন্টের পক্ষ)। তারপরে সার্ভারলাইভআইন্টারভাল বিবরণে আপনি বলেছেন "ক্লায়েন্ট সার্ভারে প্রেরণ করবে", তবে পরের অনুচ্ছেদে " ক্লায়েন্টের কাছে সার্ভারের মাধ্যমে ন্যূনল প্যাকেট প্রেরণ করা হবে"। এগুলি আমি কিছুটা বিভ্রান্তিকর মনে করি।
ক্রেগ ম্যাককুইন

1
সার্ভারে যুক্ত করার পরে আমি পেয়েছি: / etc / ssh / ssh_config: লাইন 57: খারাপ কনফিগারেশন বিকল্প: ক্লাইনেটিভাইনটারওয়াল / ইত্যাদি / ssh / ssh_config: লাইন 59: খারাপ কনফিগারেশন বিকল্প: ক্লিনেন্টালাইকাউন্টম্যাক্স
Anders

2
@ এন্ডার্স আপনি ত্রুটিটি পেয়েছেন কারণ ClientAliveIntervalএবং এটি এসএসএস ClientAliveCountMaxসার্ভার অপশন হিসাবে রয়েছে, এটি এর জন্য বোঝানো হয়েছে sshd_configএবং নাssh_config
ভ্যালেন্টাইন বাজরামি

1
@ চন্দ্রাশ আপনার কাছে নেই। ssh_configনতুন সেশনগুলি সংশোধন করার পরে সেই ফাইলটি পড়বে। /etc/environmentফাইল যার বিন্যাস রয়েছে একটি ভিন্ন জিনিস VAR="value" ছাড়া স্পেস এইভাবে VAR = "value"অবৈধ হবে। /etc/ssh/ssh_configএইভাবে উত্সাহিত করা অর্থাত্ পড়ুন: Port 22বা Host * যা এগুলি আদেশ হিসাবে বিবেচনা করবে
ভ্যালেন্টাইন বাজরামি

13

ব্যক্তিগত পরামর্শ: screenদূরবর্তী হোস্টে ব্যবহার করুন; এটি আপনার সংযোগটি যতক্ষণ এটি টার্মিনালে সক্রিয় থাকবে ততক্ষণ জীবিত রাখতে পরিচালিত করবে।

/etc/screenrcআমার স্ক্রিন সেশনগুলির দ্রুত সনাক্তকরণের জন্য আমি সাধারণত যা যুক্ত করি তা এখানে :

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
defscrollback 8192

সম্পাদনা: ইঙ্গিত।

hardstatusস্ট্রিং এবং এই ওয়েব সাইটে একটি নীচে অবস্থা লাইন দেখাবে: তিনটি খোলা ট্যাব সহ স্ক্রিন সেশন উদাহরণ

স্ক্রোলব্যাক বাফারটিও সাধারণ 1000-1500 (বিতরণের উপর নির্ভর করে) এর পরিবর্তে 8192 লাইনে প্রসারিত করা হয়।


ধন্যবাদ, দুটি প্রশ্ন: 1. আপনি নিজের screenrcফাইলের বিকল্পগুলি ব্যাখ্যা করতে পারেন ? আমি লগইন করার পরে ঠিক কীভাবে সিস্টেমটিকে লঞ্চ স্ক্রিন / টিএমউक्स কনফিগার করব?
সিন্ট্যাগমা

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

1
" সংযোগটি বাঁচিয়ে রাখুন " দ্বারা আমি মূলত বোঝায় " সংযোগটি অলস হওয়া থেকে বাধা দেয় ", যার একই ফলাফল রয়েছে। 4 ঘন্টা জন্য কোন ইনপুট আছে কিনা, SSH- র হবে অলস যান এবং অবশেষে সংযোগ, খুব ক্লোজ সব চাইল্ড প্রসেস চলে গেছে।

2
আমি যতটা ভালোবাসি screen, আমি নতুন ব্যবহারকারীদের সাথে শুরু করার পরামর্শ দিচ্ছি tmux
dotancohen

2

ওপেনএসএসএইচ সহ:

আপনার সক্ষম করা দরকার

TCPKeepAlive yes

আপনার ক্লায়েন্ট ssh_config উভয় (যেমন /etc/ssh/ssh_configবা মধ্যে ~/.ssh/config) এবং আপনার গন্তব্য এসএসএইচ সার্ভার ওপেনএসএইচএইচ চলমান (যেমন / ইত্যাদি / এসএসএস / এসএসডি_কনফিগ)।

সুতরাং প্রতিবার আপনার সংযোগটি নিষ্ক্রিয় হলে, ওপেনএসএইচ আপনার গন্তব্য হোস্টকে কিছু ডামি প্যাকেট প্রেরণ করে ...


এটি সংযোগটি The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes. ...this means that connections will die if the route is down temporarily, and some people find it annoying. linux.die.net/man/5/sshd_config- এ
আইরিন

সত্য, তবে "[…] network goes down […] client host crashes […] route is down […]"মারাত্মক ত্রুটিগুলি কোনও এসএসএইচ কনফিগারেশন ধরতে পারে না। এখানে মূল বিষয়টি হ'ল নেটওয়ার্ক ব্যর্থতা নয়, অলস এসএসএইচ সেশন। সুতরাং এটির সংক্ষেপে: - TCPKeepAlive yesসার্ভার এবং ক্লায়েন্ট উভয়কে সক্ষম করুন। - ClientAliveInterval সার্ভারে সেট IdleTimeoutকরুন - সার্ভারে সেট করুন - সেট করুন ClientAliveCountMax যে কৌশলটি করা উচিত ...
মার্টিন অ্যালার্ট

2

যদি সমস্যাটি হাইবারনেটেড ল্যাপটপ বা কম-প্রিফেক্ট নেটওয়ার্ক সংযোগের হয় তবে আমি moshকোনটি শেষ হয়ে যায় sshএবং স্বয়ংক্রিয় পুনরায় সংযোগের অনুমতি দেয় তা ব্যবহার করার পরামর্শ দেব ।

ওয়েবসাইট থেকে :

মোশ (মোবাইল শেল)

রিমোট টার্মিনাল অ্যাপ্লিকেশন যা রোমিংয়ের অনুমতি দেয়, বিরতিযুক্ত সংযোগ সমর্থন করে এবং বুদ্ধিমান স্থানীয় প্রতিধ্বনি এবং ব্যবহারকারী কীস্ট্রোকের লাইন সম্পাদনা সরবরাহ করে।

মোশ এসএসএইচের প্রতিস্থাপন। এটি আরও দৃust় এবং প্রতিক্রিয়াশীল, বিশেষত ওয়াই-ফাই, সেলুলার এবং দীর্ঘ-দূরত্বের লিঙ্কগুলির মাধ্যমে।

মোশ একটি নিখরচায় সফ্টওয়্যার, জিএনইউ / লিনাক্স, বিএসডি, ম্যাকোস, সোলারিস, অ্যান্ড্রয়েড, ক্রোম এবং আইওএসের জন্য উপলভ্য।

tmux(বা আরও পুরানো screen) এর সাথে একত্রে , এটি আমাকে sshআমার ল্যাপটপ থেকে একটি সার্ভারের সাথে সংযোগ স্থাপন করতে এবং ওয়াইফাই সংযোগ পরিবর্তন করার পরে এবং মোবাইল ডেটা ড্রপ-আউট থেকে বেঁচে থাকার পরেও কয়েক দিন যোগাযোগ থাকতে দেয়।



1

সেটিংসের/etc/sshd_config জন্য হোস্ট মেশিনে আপনার এসএসডি কনফিগারেশন পরীক্ষা করুন । IdleTimeout

IdleTimeout time
Sets idle timeout limit to time in seconds (s or nothing afternumber), 
in minutes (m), in hours (h), in days (d), or in weeks (w).If the 
connection have been idle (all channels) for that long time thechild 
process is killed with SIGHUP, and connection is closed down.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.