ওপেনএসএসএইচ ssh এর কন্ট্রোলপথ বিকল্পে কেন% h ব্যবহার করবেন না?


13

কেন "ssh_config (5)" manpages সুপারিশ করছি যে কি ControlPathবিকল্প অন্তত থাকা উচিত %h, %pএবং %rপ্লেসহোল্ডার অনুক্রমে করার অনন্যভাবে চেনা প্রতিটি ভাগ সংযোগ নেই?

আমি ভেবেছিলাম যে একই হোস্টের সংযোগের সাথে একাধিক সেশনের একই সকেটটি ভাগ করা উচিত । এর মতো কোনও সাধারণ সংজ্ঞা থাকলে তা বোঝা যায় না:

ControlPath ~/.cache/ssh/mux/%h

পরিবর্তে এর মতো কিছু:

ControlPath ~/.cache/ssh/mux/%r@%h:%p

প্রথম সংজ্ঞাটির সাথে আমার বোঝার মধ্যে একটি দূরবর্তী পোর্টগুলিতে একই দূরবর্তী হোস্টের সাথে একাধিক সেশনের মধ্যে একটি সংযোগ ভাগ করা হয় remote

আমি হোস্টের ডিফল্ট বিভাগে প্রথম সংজ্ঞা দিতে চাই যাতে এটি বলার পক্ষে যথেষ্ট হয় ssh -o ControlMaster=no

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


"আমি দূরবর্তী ব্যবহারকারী এবং দূরবর্তী পোর্ট নির্বিশেষে একই স্থানীয় ব্যবহারকারী দ্বারা শুরু করা সমস্ত সেশনের মধ্যে একই দূরবর্তী হোস্টের সাথে সংযোগটি ভাগ করতে চাই" " সংক্ষিপ্ত উত্তর: আপনি পারবেন না । আমি আমার উত্তরে এক ধরণের ব্যাখ্যা যুক্ত করেছি।
স্বর্ণলোকস

উত্তর:


13

"আমি ভেবেছিলাম যে একই হোস্টের সংযোগের সাথে একাধিক সেশনের একই সকেটটি ভাগ করা উচিত" "

তারা পারে. তবে নোট করুন যে আপনি যদি ControlPathকোনও ব্যবহারকারীর হিসাবে লগ ইন করতে চান তা বিবেচনা না করে যদি কোনও বিদ্যমান সংযোগটি ব্যবহার করে কোনও হোস্টের সাথে সংযোগ স্থাপন করেন তবে আপনি সংযোগের মূল ব্যবহারকারী হিসাবে লগ ইন হয়ে যাবেন। যেমন, "কোথাও" এর সাথে কোনও প্রতিষ্ঠিত সংযোগ নেই:

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=yes bob@somewhere

এই সেশনটি কোথাও বব @

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=no sue@somewhere

এই সময় হবে এছাড়াও , বব @ কোথাও কারণ আপনি একই ControlPath এবং সেট ব্যবহার করা ControlMaster=no; যদি ControlMaster=yes, আপনি মামলা হিসাবে লগ ইন করতে চান তবে এসএসএস আপনার কন্ট্রোলপথ যুক্তি উপেক্ষা করবে, এতে উল্লিখিতভাবে man ssh_config:

অতিরিক্ত সেশনগুলি একই কন্ট্রোলপথটি 'না' তে সেট করা কন্ট্রোলপথ ব্যবহার করে এই সকেটে সংযুক্ত হতে পারে

এর প্রমাণ হিসাবে, ControlMaster=yesউভয় ক্ষেত্রেই, বব যখন কন্ট্রোলপথ সকেটটি প্রস্থান করে তখন ~/.ssh/somewhereঅদৃশ্য হয়ে যাবে যদিও "মামলা" সেশন এখনও চলছে, অর্থাত্ মামলা সেশনটি কখনই সেই সকেটটি ব্যবহার করে না

সুতরাং, আপনি যদি একই সংযোগটি ব্যবহার করতে চান %hতবে ঠিক আছে, তবে সাবধান থাকুন যে আপনি একাধিক বিভিন্ন দূরবর্তী ব্যবহারকারী হিসাবে কোনও সংযোগ ভাগ করতে পারবেন না - ssh আপনাকে দেয় না।


অনেক ধন্যবাদ. আপনার বিস্তৃত উত্তরের আগে আমি এই ঘটনাটি মিস করেছি যে, একই সাথে দ্বিতীয় দূরবর্তী ব্যবহারকারী প্রথমটির পরিচয় ধরে নিলে বিভিন্ন দূরবর্তী ব্যবহারকারীর মধ্যে ক্লায়েন্টের মাস্টার সকেট ভাগ করা সম্ভব নয়।
টিম ফ্রিস্ক

5

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

$ ssh -n -o ControlMaster=auto -o ControlPath=~/.cache/ssh/mux/%h -l userA localhost sleep 10 & # create the master connection and background it
$ ssh -o ControlMaster=auto -o ControlPath=~/.cache/ssh/mux/%h -l userB localhost whoami
userA

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

আপনি যদি কোনও একক সার্ভারের একক পোর্ট ব্যবহার করে কোনও একক ব্যবহারকারীর বেশি সংযোগ স্থাপন না করেন তবে হ্যাঁ, ব্যবহার %hকরা যথেষ্ট be আপনার ~/.ssh/configফাইলে, আপনি এটি ব্যবহার করতে চান:

ControlMaster=auto  # use existing or create a master connection
ControlPath=~/.cache/ssh/mux/%h
ControlPersist=yes

সঙ্গে ControlPersistবিকল্প, মাস্টার সংযোগ পটভূমিতে খোলা পর্যন্ত নিহত বা সমাপ্ত রয়ে ssh -O exit। এটি একটি দুর্দান্ত সেট এটি-এবং-ভুলে যাওয়ার বৈশিষ্ট্য।

তবে যদি কোনও হোস্টে একাধিক ব্যবহারকারীর সাথে সংযোগ স্থাপনের কোনও সম্ভাবনা থাকে তবে আপনি আরও সুরক্ষিত কিছু চাইবেন:

ControlMaster=auto
ControlPath=~/.cache/ssh/mux/%r@%h:%p
ControlPersist=yes

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