আমি সমাধানটি এখানে পেয়েছি: http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/
সর্বোত্তম উপায় - টানেলগুলি যে স্বয়ংক্রিয়ভাবে বন্ধ হয়
যেমনটি আগে উল্লেখ করা হয়েছে, -f -N সুইচ সংমিশ্রণটি ব্যবহার না করে আমরা কেবল -f একা ব্যবহার করতে পারি, তবে দূরবর্তী মেশিনে একটি আদেশও কার্যকর করতে পারি। তবে, কোন কমান্ডটি কার্যকর করা উচিত, যেহেতু আমাদের কেবল একটি টানেল শুরু করতে হবে?
ঘুম তখন সবার সবচেয়ে কার্যকর আদেশ হতে পারে! এই বিশেষ পরিস্থিতিতে ঘুমের দুটি সুবিধা রয়েছে:
- এটি কিছুই করে না, তাই কোনও সংস্থান ব্যবহার করা হয় না
- ব্যবহারকারী কতক্ষণ এটি কার্যকর করা হবে তা নির্দিষ্ট করতে পারে
এইগুলি কীভাবে এসএসএস টানেলটি স্বয়ংক্রিয়ভাবে বন্ধ করতে সহায়তা করে তা নীচে ব্যাখ্যা করা হয়েছে।
রিমোট মেশিনে 10 সেকেন্ডের জন্য স্লিপ কমান্ড কার্যকর করার সময় আমরা ব্যাকগ্রাউন্ডে ssh অধিবেশন শুরু করি। সেকেন্ডের সংখ্যাটি গুরুত্বপূর্ণ নয়। একই সময়ে, আমরা ভ্যানসিউভিউয়ারকে ঠিক আগের মতোই চালিত করি:
[me@local]$ ssh -f -L 25901:127.0.0.1:5901 me@remote.example.org sleep 10; \
vncviewer 127.0.0.1:25901:1
এই ক্ষেত্রে, ssh ক্লায়েন্টকে ssh সেশনটিকে ব্যাকগ্রাউন্ডে (-f) কাঁটাচামচ করার জন্য, টানেলটি তৈরি করতে (-L 25901: 127.0.0.1: 5901) নির্দেশ দেওয়া হয়েছে এবং 10 সেকেন্ডের জন্য রিমোট সার্ভারে স্লিপ কমান্ড প্রয়োগ করুন (ঘুম 10)।
এই পদ্ধতি এবং পূর্ববর্তী এক (-N সুইচ) এর মধ্যে পার্থক্যটি মূলত: এই ক্ষেত্রে এসএসএস ক্লায়েন্টের প্রাথমিক লক্ষ্যটি টানেল তৈরি করা নয়, বরং 10 সেকেন্ডের জন্য স্লিপ কমান্ড চালানো। টানেলটি তৈরি করা এক ধরণের পার্শ্ব-প্রতিক্রিয়া, একটি মাধ্যমিক লক্ষ্য। যদি ভিএনসিভিউয়ার ব্যবহার না করা হয়, তবে এসএসএস ক্লায়েন্টটি 10 সেকেন্ড সময়কালে প্রস্থান করবে, কারণ এটির আর কোনও কাজ করার দরকার নেই, একই সাথে টানেলটি ধ্বংস করে দেওয়া।
স্লিপ কমান্ড কার্যকর করার সময়, যদি এই প্রক্রিয়াতে অন্য কোনও প্রক্রিয়া, ভিএনসিভিউয়ার, সেই টানেলটি ব্যবহার শুরু করে এবং এটি 10 সেকেন্ড সময়কালের পরেও ধরে রাখে, তবে এসএসএস ক্লায়েন্ট তার দূরবর্তী কাজ (ঘুমের প্রয়োগ) শেষ করেও, এটি করতে পারে না প্রস্থান করুন কারণ অন্য প্রক্রিয়াটি টানেলটি দখল করে। অন্য কথায়, এসএসএস ক্লায়েন্টটি টানেলটি ধ্বংস করতে পারে না কারণ এটিতে ভ্যানসিভিউয়ারকেও হত্যা করতে হবে। যখন ভিএনসিভিউয়ারটি টানেলটি ব্যবহার বন্ধ করে দেয়, তখন এসএসএস ক্লায়েন্টটিও খুব বেশি প্রস্থান করে, কারণ এটি ইতিমধ্যে এর লক্ষ্যটি সম্পন্ন করেছে।
এইভাবে, কোনও ssh প্রক্রিয়া ব্যাকগ্রাউন্ডে চলমান ছেড়ে যায়।
/tmp/session1
(যদিও এটি % প্যাটার্ন ব্যবহার করে এটির নামকরণের প্রস্তাব দেওয়া হয় - এতে কন্ট্রোলপথের বিবরণ দেখুনman ssh_config
)