এসএসএইচ সংযোগ বিচ্ছিন্ন হয়ে গেলে কেন কখনও কখনও কনসোলগুলি চিরতরে স্তব্ধ হয়ে যায়?


89

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

এটি ঘটলে খুব বিরক্ত হয় (যেমন আপনি কমান্ডের ইতিহাসটি হারাবেন)) এমন কোনও গোপন কীবোর্ড শর্টকাট রয়েছে যা একটি প্রস্থানকে বাধ্য করতে পারে (Ctrl-C বা Ctrl-D কাজ করে না)? এবং যাইহোক সমস্ত বাস্তবায়ন জুড়ে এই এলোমেলো "বাগ" এর কারণ কী?


এই থ্রেডটি মোশ (মোবাইল শেল) উল্লেখ করা উপযুক্ত বলে মনে হচ্ছে যা রোমিং (আইপি পরিবর্তন) এবং অন্যান্য স্টাফ সহ সংযোগ ব্যর্থতার সাথে ভাল আচরণ করে।
সিপরিয়ান টমোইগ্যাগ

উত্তর:


137

প্রস্থানটি জোর করার জন্য একটি "গোপন" কীবোর্ড শর্টকাট রয়েছে: ~) হিমায়িত অধিবেশন থেকে, এই কীগুলি Enter~.যথাযথভাবে চাপুন: টিলড (কেবলমাত্র একটি নতুন লাইনের পরে) এসএসএস ক্লায়েন্ট দ্বারা একটি পালানোর ক্রম হিসাবে স্বীকৃত, এবং পিরিয়ডটি জানিয়েছে ক্লায়েন্টটি আরও বিজ্ঞাপন ছাড়াই এটির ব্যবসাটি বন্ধ করে দেবে।

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

সম্পাদনা করুন: এই বিঘ্নিত কীটির আর একটি দরকারী অ্যাপ্লিকেশন হ'ল স্থানীয় এসএসএস ক্লায়েন্টের দৃষ্টি আকর্ষণ করা এবং এটি আপনার ইতিহাস থেকে কিছু পাওয়ার জন্য এক মিনিটের জন্য আপনার স্থানীয় শেলের কাছে ফিরে আসা - এটি দূরবর্তীভাবে কাজ চালিয়ে যেতে ভুলে যাওয়া। Enter~ Ctrl+ Zআপনার স্থানীয় শেলের ব্যাকগ্রাউন্ড জব সারিতে এসএসএস ক্লায়েন্টকে প্রেরণ করা, তারপরে fgএটিকে ফিরে পাওয়ার পক্ষে স্বাভাবিক।

সম্পাদনা: নেস্টেড এসএসএইচ সেশনগুলির সাথে ডিল করার সময়, আপনি কেবল শৃঙ্খলে থাকা এসএসএইচ সেশনগুলির মধ্যে কেবল একটির বাইরে বেরোনোর ​​জন্য একাধিক টিল্ড অক্ষর যুক্ত করতে পারেন, তবে অন্যগুলি ধরে রাখতে পারেন। উদাহরণস্বরূপ, যদি আপনি তিনটি স্তরে নেস্টেড হন, (যেমন আপনি স্থানীয়-> মেশিন 1-> মেশিন 2-> মেশিন 3 থেকে বেরিয়ে এসেছেন), Enter~.আপনাকে আপনার স্থানীয় সেশনে ফিরিয়ে Enter~~.আনবে, Enter~~~.আপনাকে মেশিন 1 এ ছেড়ে দেবে এবং আপনাকে মেশিন 2 এ ছেড়ে দেবে । এটি অন্যান্য এস্কেপ সিকোয়েন্সগুলির জন্যও কাজ করে যেমন অস্থায়ীভাবে ssh সেশনটিকে ব্যাকগ্রাউন্ডে স্থানান্তর করা। উপরেরগুলি নীড়ের কোনও স্তরের জন্য কাজ করে, আরও টিল্ড যুক্ত করে।

অবশেষে, আপনি Enter~?উপলভ্য কমান্ডগুলির সহায়তা মেনু মুদ্রণ করতে ব্যবহার করতে পারেন ।

টিএল; ডিআর - সমর্থিত এস্কেপ কমান্ডগুলি সমর্থিত পালানোর অনুক্রমগুলি:

 ~.   - terminate connection (and any multiplexed sessions)
 ~B   - send a BREAK to the remote system
 ~C   - open a command line
 ~R   - request rekey
 ~V/v - decrease/increase verbosity (LogLevel)
 ~^Z  - suspend ssh
 ~#   - list forwarded connections
 ~&   - background ssh (when waiting for connections to terminate)
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

11
মাথায় sshd শুটিংয়ের জন্য ডডক্যাটৌলল-সিক্রেট-প্রবেশন পাসওয়ার্ড জানতে +1। আমি কীভাবে এটির মতো আবিষ্কার করেছি ( ~/.somethingorotherপ্রবেশের পরে আঘাতের পরে ভুল টাইপ করা)?
voretaq7

2
@ ভোরেটাক:: না আমি সেই স্মার্ট ছিলাম না, কিন্তু যখন কেউ আমাকে আঁকিয়েছিল আমি গিয়েছিলাম "সত্যিই? তো এই যে সব সময় আমার শেলটি ব্যঙ্গ হয়ে গেল! বিনা কারণে যখন আমি টাইপ করছিলাম?" । আপনি যেটির উল্লেখ করেছেন তার ভুল টাইপ বাদে এটি সাধারণ ক্রম নয়, তবে এটি ঘটতে পারে।
কালেব

14
যার মাধ্যমে "গোপন" এর অর্থ "ম্যান পেজে"।
larsks

4
যদিও অনেকে এই সম্পর্কে জানেন না, এটি সত্যিই সরল দৃষ্টিতে একটি গোপন বিষয়। man sshএই ESCAPE CHARACTERSবিভাগের অধীনে কভার । ~.(সংযোগ বিচ্ছিন্ন) এবং ~^Z(ব্যাকগ্রাউন্ড ssh) খুব সহজ।
স্টিফান লাসিউইস্কি

9
অবশ্যই এটি ম্যান পেজে আছে :) আমি কেবল গোপন শব্দটি ব্যবহার করেছি কারণ ওপি করেছে, এবং আমি গালে জিহ্বা ব্যবহার করছিলাম। এই বৈশিষ্ট্যটির সাথে সমস্যাটি হ'ল লোকেরা কোথায় এটি সন্ধান করবে তা জানে না, তারা নিয়ন্ত্রণের অক্ষর এবং এই জাতীয় সংকেতগুলি শেলের বা এর মতো হওয়ার প্রত্যাশা করে। একবার আপনি কোথায় দেখতে হবে বা কী জিজ্ঞাসা করতে হবে তা জানার পরে অবশ্যই এটি রয়েছে।
কালেব

12

এসএসএইচ একটি রাখার ব্যবস্থা রাখে। আপনার স্থানীয়টিতে নিম্নলিখিতগুলি যুক্ত করুন ~/.ssh/config(এটি উপস্থিত না থাকলে তৈরি করুন):

ServerAliveInterval 15
ServerAliveCount 3

এই সেটিংটি সুরক্ষিত টানেলের মাধ্যমে প্রতি 15 সেকেন্ডে প্রেরিত একটি বেঁচে থাকা সংকেত স্থাপন করবে। পরপর তিনটি ব্যর্থতার পরে, এসএসএইচ ক্লায়েন্টটি প্রস্থান করবে।

নোট করুন যে কয়েকটি সিস্টেমে (ম্যাকোস 10.14 সহ) এর পরিবর্তে এটি হওয়া দরকার:

ServerAliveInterval 15
ServerAliveCountMax 3

এই উত্তরটি জিজ্ঞাসা.বুন্টু থেকে নেওয়া: https://askubuntu.com/a/29967/30266


9

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


5

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

যদিও এটি আসলে প্রশ্নের উত্তর দেয় না এটি সংযোগ হ্যাংয়ের প্রভাবগুলি হ্রাস করতে সহায়তা করতে পারে: যখন আমি দূর থেকে কাজ করি (এবং এমনকি সাধারণত যখন আমি না তখনও) আমি চালিত করি screen( byobuতার প্রাপ্যতার উপর নির্ভর করে মোড়ক ছাড়া বা ছাড়া ) যাতে যদি কোনও ধরণের সংযোগ থাকে তবে তার ইতিহাসের সাথে আমার সেশনটি ড্রপ করে রাখে এবং পুনরায় সংযোগ করার সময় আমি এটিকে রেখে দিয়েছি state


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

2
@ কালেব: প্রশ্নটি ইতিহাস হারানোর উল্লেখ করেছে এবং কমান্ডের ইতিহাসটি সার্ভার-সাইডে সঞ্চিত রয়েছে। ইতিহাসের সাথে সার্ভারকে কিছু আলাদা করতে বলার জন্য আপনাকে ইতিহাসের সাথে কিছু আলাদা করার জন্য সার্ভারের কাছে একটি বার্তা পাওয়া দরকার। অবশ্যই ব্যাশ (এবং কিছু অন্যান্য শেল) রেকর্ড ইতিহাসের লাইনগুলি তত্ক্ষণাত র‍্যামে সংগ্রহের পরিবর্তে রেকর্ড করার ইতিহাসের লাইন রয়েছে যতক্ষণ না ব্যবহারকারী সঠিকভাবে শেলটি উপস্থিত করে exit/ logoutযা ব্যবহার না করে ইতিহাসের সমস্যাটি সমাধান করবে screen
ডেভিড স্পিললেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.