কিভাবে ম্যানুয়ালি ssh কন্ট্রোলমাস্টার সংযোগগুলি বন্ধ (হত্যা) করা যায়


63

নিম্নলিখিত .ssh/configকনফিগারেশন সহ:

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 4h

4 ঘন্টা আগে স্থায়ী সংযোগ বন্ধ কিভাবে?

আমি জানি আপনি নতুন সংযোগ তৈরি করতে পারেন তবে সেগুলি কীভাবে বন্ধ করবেন (সমস্ত)?

সম্ভবত সমস্ত স্থির সংযোগগুলি দেখানোর এবং সেগুলি স্বতন্ত্রভাবে পরিচালনা করার উপায় রয়েছে তবে আমি এটি খুঁজে পাচ্ছি না।


4
এটি হত্যা করছে না, তবে আপনি কেবল স্থির সংযোগটি ব্যবহারের মাধ্যমে সহজেই ব্যবহার করতে পারবেন নাssh -S none (সম্ভবত এটি আপনাকে ইতিমধ্যে সহায়তা করে)।
sr_

না আমি কোনও রিমোট সার্ভারে কোনও ব্যবহারকারীকে সরিয়ে দেওয়ার চেষ্টা করছি না, তবে ঝুলন্ত সংযোগগুলি আমাকে এটি করতে বাধা দেয়।
পাওলো

উত্তর:


81

ম্যানুয়াল থেকে :

-O ctl_cmd
একটি সক্রিয় সংযোগ মাল্টিপ্লেক্সিং মাস্টার প্রক্রিয়া নিয়ন্ত্রণ করুন। যখন -Oঅপশন উল্লেখিত থাকে, ctl_cmdযুক্তি ব্যাখ্যা এবং মাস্টার প্রক্রিয়া পাস করা হয়েছে। বৈধ কমান্ডগুলি check হ'ল : (মাস্টার প্রক্রিয়া চলছে কিনা তা পরীক্ষা করুন), forward(কমান্ড কার্যকর না করে ফরওয়ার্ডিংয়ের জন্য অনুরোধ করুন), cancel(ফরোয়ার্ডিং বাতিল করুন), exit(মাস্টারকে প্রস্থান করার জন্য অনুরোধ করুন), এবং stop (মাস্টারকে আরও বহুবিধ অনুরোধ গ্রহণ করা বন্ধ করার অনুরোধ করুন)।

পুরানো সংস্করণগুলি কেবল আছে checkএবং exit, তবে এটি আপনার উদ্দেশ্যে যথেষ্ট।

ssh -O check host.example.com

যদি আপনি সমস্ত সংযোগ মুছতে চান (কেবলমাত্র কোনও নির্দিষ্ট হোস্টের সাথে সংযোগ নয়) একটি ঝাঁকুনির মধ্যে পড়ে, তবে fuser /tmp/ssh_mux_*বা lsof /tmp/ssh_mux_*প্রতিটি সকেটকে নিয়ন্ত্রণ করছে এমন এসএসএস ক্লায়েন্টদের তালিকা তৈরি করবে। fuser -HUP -k tmp/ssh_mux_*তাদের সমস্ত পরিষ্কারভাবে মেরে ফেলার জন্য ব্যবহার করুন (সিগন্যাল হিসাবে সাইনগআপ ব্যবহার করা সর্বোত্তম কারণ এটি ক্লায়েন্টদের সঠিকভাবে তাদের সকেট অপসারণ করতে পারে)।


এটি একটি দুর্দান্ত উত্তর। এটি আমি অর্জন করার চেষ্টা করছিলাম তার জন্য এটি উপযুক্তcheckআমি যা চেয়েছিলাম তার থেকেও বেশি দরকারী, যা যা হয় তা কি exit! : ডি
এলিওটিটিসিবল

5
ওএস এক্স-এ fuserসিগন্যাল প্রেরণ করতে পারে না, তবে এটি ঠিক একইভাবে কাজ করে:lsof -Fp /tmp/ssh_mux_* | cut -c 2- | xargs kill -HUP
ওরি

11

cmcকন্ট্রোলমাস্টার সেশনগুলি পরিচালনা করতে আমি একটি ওপেন সোর্স ইউটিলিটি লিখেছি : ক্লকওয়ার্ক নেট / সেন্টিমিটার :

Usage:  cmc [ -c HOST | -o HOST | -x HOST ]
        cmc [ -L | -l | -O | -X ]
        cmc -h

ControlMaster Controller - Eases management of SSH ControlMaster connections

Options:
    -h      show this help message and exit
    -c HOST check HOST ControlMaster connection status (maybe specified more
            than once)
    -L      list ControlMasters defined in SSH_CONFIG
    -l      list ControlMaster connection sockets in ~/.ssh/ and check their
            connection status
    -O      open all ControlMasters defined in SSH_CONFIG
    -o HOST open a ControlMaster session (maybe specified more than once)
    -x HOST close ControlMaster session (maybe specified more than once)
    -X      exit all ControlMaster connections with sockets in ~/.ssh/

Notes:
    * Any unopened sockets in ~/.ssh/ are removed with -l and -X

3

আপনি চালাতে fuser /tmp/ssh_mux_blablabla(সম্ভাব্য প্রয়োজন sudo) এবং এটি ফিরে আসা পিআইডি মেরে ফেলতে পারেন। fuserকোন প্রক্রিয়াগুলি কোনও ফাইল ব্যবহার করছে তা দেখায়। (এবং আরও, দেখুন man fuser।)

আপডেট: গিলসের উত্তর দেখুন; এটি আরও বিস্তারিত।


3

এটি কন্ট্রোল মাস্টারের জন্য সকেট ফাইলটি ব্যবহার করে আমার জন্য কাজ করে:

$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>

উদাহরণ

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

$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$

এবং এটির সাথে সংযোগ বিচ্ছিন্ন:

$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$

যদি এটি এখনও সংযুক্ত থাকে, এটি এটি অবিলম্বে প্রস্থান করতে বাধ্য করবে:

$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$

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

এটি ছাড়া এটি আমাকে দেয়:

$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

ভার্সন সম্পর্কিত তথ্য

ওএসএক্স
$ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
CentOS 7.x
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

আমি নিশ্চিত করেছি যে এই দুটি সংস্করণেই অতিরিক্ত বোগাস যুক্তির প্রয়োজন হয়েছিল।

তথ্যসূত্র

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