জিনোম টার্মিনালকে ssh সংযোগের সময়সীমা ও হিমশীতল এড়ানোর উপায়


235

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

এটি উবুন্টুতে রয়েছে gnome-terminalযদিও এটি টার্মিনাল ইনপুট / আউটপুটকে বিরতি দিচ্ছে বলে মনে হচ্ছে এবং এটি জিনোম টার্মিনাল সফ্টওয়্যারটির ক্রিয়াকলাপকে প্রভাবিত করবে না। gnome-terminalSsh এর সাথে বিরক্তিকর অসামঞ্জস্যতার চেয়ে কম ত্রুটিযুক্ত কম ।

সুতরাং, সময় শেষ হয়ে যাওয়া এসএসএস সংযোগগুলি থেকে টার্মিনালটি রোধ / পুনরুদ্ধার করার কোনও উপায় আছে কি?


উত্তর:


256

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

এর জন্য কনফিগারেশন ফাইলটিতে রয়েছে ~/.ssh/config। রিমোটহোস্টে প্রতি চার মিনিটে সিগন্যালটি প্রেরণ করতে, নিম্নলিখিতটি আপনার মধ্যে রাখুন ~/.ssh/config

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

এটি আমার মধ্যে যা আছে ~/.ssh/config

সমস্ত হোস্টের ব্যবহারের জন্য এটি সক্ষম করতে:

Host *
  ServerAliveInterval 240

চালানোর বিষয়টি নিশ্চিত করুন chmod 600 ~/.ssh/config, কারণ কনফিগারেশন ফাইলটি বিশ্ব-পঠনযোগ্য নয় be


1
শব্দের সাথে আমাকে সাহায্য করার জন্য ধন্যবাদ sblair, এটি অনেক প্রশংসিত। আমি পরিবর্তিত হয়েছি "ফিরে" উচিত "না হওয়া উচিত" কারণ ssh ফাইলের অনুমতি পরীক্ষা করে এবং এটি যদি বিশ্ব বা গোষ্ঠী পাঠযোগ্য হয় তবে এটি ব্যর্থ হয়।
লুডউইগ ওয়েইঞ্জিয়েরেল

1
ওপি যা চেয়েছিল তা নয়। নিষ্ক্রিয়তার কারণে তাকে লাথি মেরে ফেলা হচ্ছে না। সে সংযোগ দেওয়ার চেষ্টা করছে এবং তার টার্মিনাল হিমশীতল।
সেরিন

এই কোথায় ~/.ssh/config?
ব্যবহারকারী

1
@ ব্যবহারকারী '~ /' আপনার হোম ফোল্ডারটি উপস্থাপন করে। '.ssh' আপনার বাড়ির ফোল্ডারের মধ্যে একটি ফোল্ডার।
wkm

6
যদি আপনার সংযোগটি আসলে হারিয়ে যায় তবে এটি অকেজো ...
so12311

248

প্রেস Enter, ~, .একের পর এক একটি হিমায়িত সেশন থেকে সংযোগ বিচ্ছিন্ন করতে।

Ssh ম্যান পৃষ্ঠাতে "এসক্র্যাপ অক্ষর" বিভাগটি অন্তর্নিহিত বিশদটি ব্যাখ্যা করে।


40
এই উত্তরটি আরও সঠিকভাবে প্রশ্নের উত্তর দিতে আমার কাছে উপস্থিত হয়েছিল এবং যে কোনও ক্ষেত্রেই আমি উত্তরটি খুঁজছিলাম।
কোটডমুস

মনে রাখবেন যে, আপনি লাইন uncomment প্রয়োজন EscapeChar ~মধ্যে /etc/ssh/ssh_config(অথবা ~/.ssh/ssh_configযদি আপনি পছন্দ)।
আদিত্য এমপি

@ অ্যাডটিএমনন নং, EscapeChar ~ইতিমধ্যে অন্তর্নির্মিত ডিফল্ট।
পিটার আইসেন্ট্রাট

2
@ মার্ক প্রশ্নটি জিজ্ঞাসা করে " সময় শেষ হয়ে যাওয়া এসএসএস সংযোগগুলি থেকে টার্মিনালটি ফিরে পাওয়ার কোনও উপায় কি ?" জোর আমার।
কোটেডমুস

2
প্রশ্নটির প্রসঙ্গে এটি ভুল ছিল, আমি যা চেয়েছিলাম ঠিক এটাই ছিল।
সাবিন সেবাস্তিয়ান

38

এমনকি এটি আপনার প্রশ্নের সরাসরি উত্তর নয়, এটি আপনার সমস্যার সাথে সম্পর্কিত। সংযোগটি বাঁচিয়ে রাখার চেষ্টা করার পরিবর্তে (সমস্ত সংযোগ শেষ পর্যন্ত মারা যায়) আপনি টার্মিনাল মাল্টিপ্লেক্সার ব্যবহার করতে পারেন, screenএবং tmuxএটি আপনার টার্মিনালটি সংযোগ বিচ্ছিন্ন হয়ে গেলেও পটভূমিতে সেশনটি জীবিত রাখে।

মূলত আপনি এসএসএইচ সার্ভারে লগ ইন করার সাথে সাথে আপনি তাৎক্ষণিকভাবে চালনা করেন screenযা একটি নতুন সেশন তৈরি এবং সংযুক্ত করবে:

$ screen

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

$ screen -ls

একটি অধিবেশন পুনরায় সংযুক্ত করতে:

$ screen -r <session>

<session>পিআইডি বা একটি সেশনের নাম কোথায় । আপনি আপনার সেশনে পুনরায় সংযুক্ত হবেন এবং আপনি যেখান থেকে ছেড়ে গিয়েছিলেন সেখান থেকে আপনি চালিয়ে যেতে পারেন!

আপনি সেশনটি আলাদা করতে এবং আপনি যেখানে রেখেছিলেন ঠিক সেই স্থান থেকে বাছাই করতে বাসা থেকে পুনরায় সংযোগ করতে পারেন। অধিবেশন আপনি ব্যবহার বিচ্ছিন্ন করার জন্য C-aদ্বারা অনুসরণ C-d(না না Control + Aএবং তারপর Control + D)।

নেই সরল অনলাইন টিউটোরিয়াল হিসাবে ভাল।

রিমোট সার্ভারগুলি ব্যবহার করা screenএবং ব্যবহার করা tmuxএকটি সেরা অনুশীলন হিসাবে বিবেচিত হয় এবং এটি সুপারিশ করা হয় । কিছু লোক screenতাদের ডিফল্ট লগইন শেল হিসাবে যতদূর যেতে পারে , তাই তারা সংযোগ করার সাথে সাথে তারা তত্ক্ষণাত একটি নতুন screenঅধিবেশন শুরু করে ।


2
: অন্য বিকল্প mosh ব্যবহার করা mosh.mit.edu
বোকচন্দর

এটি বিশেষত কার্যকর যদি আপনি হটস্পট বা ওয়াইফাই ব্যবহার করেন যা মাঝে মাঝে বাদ যায়।
রান্ডাল

11

-o ServerAliveInterval=30আপনার সংযোগের স্ট্রিংয়ে যুক্ত করার চেষ্টা করুন ( 30মানে 30 সেকেন্ড এবং অবশ্যই সামঞ্জস্য করা যেতে পারে)


5

আপনি এসএসএইচ সার্ভারের পক্ষ থেকে একটি অলস সময়সীমা ব্যবধানও সেট করতে পারেন:

ফাইল: /etc/ssh/ssh_config

বিষয়বস্তু:

ClientAliveInterval XX
ClientAliveCountMax YY

এটি ক্লায়েন্ট সেটিংয়ের মতো ঠিক একইভাবে কাজ করে তবে ক্লায়েন্টের পরিবর্তে নাল প্যাকেটগুলি সার্ভার থেকে পাঠানো হয়।

থেকে নিষ্কাশিত:

http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html


1

এমন লোকদের জন্য যারা ক্লায়েন্টকে প্রথম স্থানে সময় নির্ধারণ করতে বাধা দিতে চায়।

আপনি ConnectTimeout 0কনফিগারেশন ফাইল সেট করতে চেষ্টা করতে পারেন । মান 0 অর্থ হ'ল সংযোগটি অনির্দিষ্টকালের জন্য অবিরত রাখা থাকবে যদি না বন্ধ থাকে।

আপনার কনফিগারেশন (বা ssh_config) ফাইলটি দেখতে দেখতে এটির মতো হতে পারে:

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