এসএসএইচ সেশনগুলি শাটডাউন / পুনরায় বুট করার জন্য স্তব্ধ


13

আমার একটি সার্ভার রয়েছে যা ডেবিয়ান চালায় এবং এটিতে এসএসএসডি রাখে এবং যদি টিসিপি সময় শেষ না হওয়া পর্যন্ত আমার এসএসএইচ অধিবেশন ক্লায়েন্টের পাশে স্থির থাকে তবে আমার সার্ভারটি পুনরায় বুট করতে হবে। আমি ধরে নিই কারণ এটি যখন sshdসমাপ্ত করা হচ্ছে তখন এটি স্পষ্টভাবে হোস্টের কাছে খোলা এসএসএইচ সেশনগুলি বন্ধ করে না। sshdসবার প্রথমে সংযোগ বিচ্ছিন্ন করতে, তারপরে নিজেকে স্বাভাবিক হিসাবে শেষ করতে আমি কী করব ? এখন পর্যন্ত আমি কোনও পরামিতি দেখতে পাচ্ছি না man sshd_configযা শাটসাউন আচরণের সাথে সম্পর্কিত।


1
অন্য সমস্ত কিছু ব্যর্থ হলে, আপনি যে কোনও সময় [এন্টার] [~] [।] টিপে এসএসএইচ ক্লায়েন্টকে হত্যা করতে পারেন। কীভাবে আপনার সমস্যাটি আসবে তা আসলে কীভাবে সমাধান করবেন সে সম্পর্কে ব্যাখ্যা।
n.st

উত্তর:


32

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

আপনার প্রথম চিন্তাটি হ'ল শাটডাউনের সময় সমস্ত এসএসএইচ প্রসেসকে কেবল প্রথম ধাপ হিসাবে হত্যা করতে হবে এবং সেখানে বেশ কয়েকটি সিস্টেমড সার্ভিস ফাইল রয়েছে যা কেবল এটি করে।

কিন্তু (এটা কিভাবে "অনুমিত" আসুন কাজ করতে হবে) কোর্স neater সমাধান থাকে: systemd-logind
systemd-logindসক্রিয় ব্যবহারকারীর সেশনের উপর নজর রাখে (স্থানীয় এবং এসএসএইচগুলি) এবং তাদের মধ্যে উদ্ভূত সমস্ত প্রক্রিয়া তথাকথিত "টুকরা" এ নিয়োগ করে। এই পদ্ধতিতে, সিস্টেমটি বন্ধ হয়ে গেলে, সিস্টেমড ব্যবহারকারীর টুকরোগুলির ভিতরে থাকা সমস্ত কিছু সাইনটার্ম করতে পারে (যার মধ্যে একটি নির্দিষ্ট অধিবেশনটি হস্তান্তরিত এসএসএইচ প্রক্রিয়া অন্তর্ভুক্ত) এবং তারপরে পরিষেবা এবং নেটওয়ার্ক বন্ধ করে দেওয়া চালিয়ে যেতে পারে।

systemd-logindনতুন ব্যবহারকারীর সেশন সম্পর্কে অবহিত হওয়ার জন্য একটি প্যাম মডিউল প্রয়োজন এবং আপনার এটির স্থিতি পরীক্ষা করতে dbusআপনাকে ব্যবহার loginctlকরতে হবে, সুতরাং এটি দুটি ইনস্টল করুন:

apt-get install libpam-systemd dbus

আপনার /etc/ssh/sshd_configপ্রকৃতপক্ষে মডিউলটি ব্যবহার করতে চলেছে তা নিশ্চিত হন UsePAM yes


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

শুধুমাত্র স্ট্যাক-ওভারফ্লোতে যাওয়ার সময় কোনও কারণে আমাকে উত্তর সম্পর্কে অবহিত করা হয়নি। রহস্যময়।
ভেস্পার

1
সুতরাং, সংক্ষেপে, শাটডাউন করার সময় কয়েক সেকেন্ড শেভ করতে, আমাদের সংযোগগুলি সঠিকভাবে শেষ করতে কেবল আমাদের একটি সম্পূর্ণ লোভ ইনস্টল করতে হবে? সিরিয়াসলি? এটি অস্থির হয়ে উঠছে। আমরা ধ্বংসপ্রাপ্ত।
leucos

3
মনে রাখবেন যে libpam-systemd এবং dbus ইনস্টল করার পরে প্রথমে পুনরায় বুট করা আপনার এসএসএইচ অধিবেশন ঝুলতে থাকবে। যে এড়াতে পরিবর্তে, rebootএকটি কি shutdown -r, একটি 1 মিনিট দেরি যা অক্ষমতা SSH সেশান বন্ধ করতে সময় রেখে।
mivk

9

এটি সার্ভারের দিকে নয়, ক্লায়েন্টের পক্ষে সেট করার দরকার side আপনার ~/.ssh/configধারণ করতে সম্পাদনা করুন

ServerAliveInterval 15
ServerAliveCountMax 5

এর অর্থ হ'ল নিষ্ক্রিয়তার 15 সেকেন্ড পরে, আপনার ক্লায়েন্ট সার্ভারে একটি বার্তা প্রেরণ করবে। যদি এটির কোনও প্রতিক্রিয়া না পাওয়া যায় তবে এটি 5 বার পর্যন্ত আবার চেষ্টা করবে এবং যখন এটি এখনও উত্তর না পাবে তখন সেশনটি বন্ধ করে দেবে।


2
এর ফলে ssh ক্লায়েন্টের সার্ভার ডেড হওয়ার আগে 75s এর বিলম্ব ঘটবে। রাইট?
ভেস্পার

1
হ্যাঁ, এবং সংক্ষিপ্ত সময়সীমা পেতে আপনি প্যারামিটারগুলি সামঞ্জস্য করতে পারেন।
তেরো কিলকানেন

এটি আমার জন্য সমস্যার সমাধান। এ জাতীয় জ্বালা সমস্যা।
জাস্টিন অ্যান্ড্রুস্ক

5

এই আচরণটি এই দেবিয়ান বাগে রিপোর্ট করা হয়েছে , আপনাকে কেবল সঠিকভাবে প্যাকেজটির সাথে পাঠানো শাটডাউন স্ক্রিপ্টগুলি সঠিকভাবে সেটআপ করতে হবে কারণ স্বয়ংক্রিয়ভাবে, সেগুলি ডিফল্টরূপে অনুলিপি করা হয় না:

cp /usr/share/doc/openssh-client/examples/ssh-session-cleanup.service /etc/systemd/system/
systemctl  enable ssh-session-cleanup.service

1

জেনি ডি তার উত্তরে কেবল একটি এসএসএস কমান্ডের জন্য যে বিকল্পগুলির বিষয়ে কথা বলেছেন তা আপনি নির্দিষ্ট করতে পারেন

ssh -t -o ServerAliveInterval=1 -o ServerAliveCountMax=1 user@host sudo poweroff

আপনি যদি এটি প্রায়শই করেন তবে আপনি এটি স্ক্রিপ্ট করতে পারেন।



0

দুর্ভাগ্যক্রমে সার্ভারফল্ট আমাকে বছরের পর বছর থেকে খুব কম পয়েন্টের মাধ্যমে থ্রেডের জবাব দিতে দেয়নি। তবে আনলকিং get পেতে আমার অন্যান্য ব্লগে স্প্যাম করার দরকার নেই ... যাতে উত্সর্গীকৃত উত্তর হিসাবে:

রেফ্রাইল যেমন উল্লেখ করেছেন

cp /usr/share/doc/openssh-client/examples/ssh-session-cleanup.service /etc/systemd/system/
systemctl  enable ssh-session-cleanup.service

কাজ করে। পুনরায় বুট না করে এটি ব্যবহার করতে / সার্ভারটি আপনার অতিরিক্ত কাজ করা উচিত:

systemctl daemon-reload
systemctl start ssh-session-cleanup.service

সুতরাং পরিষেবাটি নিবন্ধীকৃত এবং শুরু হয়েছে এবং সিস্টেমটি পুনরায় বুট / শাটডাউন উদ্দেশ্যে এটি বন্ধ করা দরকার।


তাহলে আপনি কি আর একটি উত্তর পুনরাবৃত্তি করছেন?
রালফ্রেডল

কোন? আমি 2 টি লাইন কেবলমাত্র উপরের জবাবের রেফারেন্স হিসাবে ব্যবহার করেছি কারণ লিখিত হিসাবে আমি এখনও জবাব দিতে পারি না। আমি এটি পুনরায় বুট না করে ব্যবহারের জন্য প্রয়োজনীয় পদক্ষেপগুলি যুক্ত করেছি। এটি অন্য প্রশ্ন থ্রেডেও দেওয়া যেতে পারে তবে আমি চেক আউট করি নি।
Reiner030
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.