কীভাবে এই এসএস টানেলটি বন্ধ করবেন? [বন্ধ]


101

আমি এই পোস্টে বর্ণিত হিসাবে একটি এসএসএস টানেলটি খুললাম: জেনড_ডিবি: এসএসএইচ টানেলের সাথে একটি মাইএসকিউএল ডাটাবেসের সাথে কীভাবে সংযুক্ত করব?

তবে এখন আমি জানি না আমি আসলে কী করেছি। এই আদেশটি সার্ভারে কিছু প্রভাবিত করে? এবং আমি কীভাবে এই টানেলটি বন্ধ করব, কারণ এখন আমি আমার স্থানীয় মাইএসকিএল সঠিকভাবে ব্যবহার করতে পারি না।

আমি ওএসএক্স সিংহটি ব্যবহার করি এবং সার্ভারটি উবুন্টু ১১.১০-তে চালিত হয়।

উত্তর:


244

ধরে নিচ্ছি আপনি এই কমান্ডটি চালিয়েছেন: আপনার লিঙ্কিত ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nপোস্টে বর্ণিত।

কমান্ডের একটি ভাঙ্গন:

  1. ssh: এটি বেশ স্ব-ব্যাখ্যামূলক। আহ্বান ssh
  2. -f: ( man sshপৃষ্ঠা থেকে )

    কমান্ড প্রয়োগের ঠিক আগে পটভূমিতে যাওয়ার জন্য এসএসএসকে অনুরোধ করুন। এটি দরকারী যদি ssh পাসওয়ার্ড বা পাসফ্রেজগুলির জন্য জিজ্ঞাসা করতে চলেছে তবে ব্যবহারকারী ব্যাকগ্রাউন্ডে এটি চায়।

    মূলত, sshসংযোগ স্থাপনের জন্য আপনি কোনও পাসওয়ার্ড প্রবেশ করানোর পরে পটভূমিতে প্রেরণ করুন ; এটি আপনাকে localhostলগ ইন করার পরিবর্তে আপনাকে শেল প্রম্পট দেয় remote-host

  3. user@mysql-server.com: আপনি যে লগইন করতে চান এমন রিমোট সার্ভার।
  4. -L 3306:mysql-server.com:3306: এটি আকর্ষণীয় কিছু। -L( man sshপৃষ্ঠা থেকে ):

    [bind_address:] পোর্ট: হোস্ট: হোস্টপোর্ট: নির্দিষ্ট করে যে স্থানীয় (ক্লায়েন্ট) হোস্টের প্রদত্ত বন্দরটি দূরবর্তী দিকের প্রদত্ত হোস্ট এবং পোর্টে ফরোয়ার্ড করা হবে।

    সুতরাং -L 3306:mysql-server.com:3306binds স্থানীয় বন্দর 3306থেকে দূরবর্তী পোর্ট 3306 হোস্টmysql-server.com

    আপনি যখন স্থানীয় পোর্টের 3306সাথে সংযোগ স্থাপন করেন , তখন সংযোগটি সুরক্ষিত চ্যানেলের মাধ্যমে ফরোয়ার্ড করা হয় mysql-server.comদূরবর্তী হোস্ট , mysql-server.comতারপর সাথে সংযোগ করে mysql-server.comপোর্টে 3306

  5. -N: একটি আদেশ চালাবেন না। এটি "স্রেফ ফরওয়ার্ডিং পোর্ট" (ম্যান পৃষ্ঠার উদ্ধৃতি) জন্য দরকারী।

এই আদেশটি সার্ভারের কিছু প্রভাবিত করে?

হ্যাঁ, এটি 3306 পোর্টে লোকালহোস্ট এবং মাইএসকিএল-সার্ভার ডট কমের মধ্যে একটি সংযোগ স্থাপন করে ।

এবং আমি কীভাবে এই টানেলটি বন্ধ করব ...

আপনি যদি ব্যবহার করেছেন -f, আপনি লক্ষ্য করবেন যে sshপ্রক্রিয়াটি আপনি পটভূমিতে মাথা খুললেন। এটা বন্ধ সুন্দর পদ্ধতি চালানো হয় ps aux | grep 3306, খুঁজুন pidএর ssh -f ... -L 3306:mysql-server.com:3306 -N, এবংkill <pid> । (অথবা হতে পারে kill -9 <pid>; আমি যদি killকাজ করি তবে আমি ভুলে যাই )। আপনার অন্যান্য সংযোগগুলি না খোলার এতে সুন্দর সুবিধা রয়েছে ssh; যদি আপনি একাধিক পেয়ে থাকেন তবে এগুলি পুনরায় প্রতিষ্ঠিত করা কিছুটা ... ব্যথা হতে পারে।

... কারণ এখন আমি আমার স্থানীয় মাইএসকিএল সঠিকভাবে ব্যবহার করতে পারি না।

এটি কারণ আপনি স্থানীয় mysql প্রক্রিয়া কার্যকরভাবে "ক্যাপচার" করেছেন এবং যে কোনও ট্র্যাফিক যা এর সাথে সংযোগ স্থাপনের চেষ্টা করে তা দূরবর্তী স্থানে ফরোয়ার্ড করেছেন mysql প্রক্রিয়াতে । একটি খুব ভাল সমাধান পোর্ট-ফরোয়ার্ডে 3306 লোকাল পোর্ট ব্যবহার না করা হবে । 33060 এর মতো ব্যবহার করা হয়নি এমন কিছু ব্যবহার করুন ( অনুরূপ। মনে রাখা কিছুটা সহজ করে তোলে)।

সুতরাং, যদি আপনি ব্যবহার ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -Nকরার পরে, আপনার পার্সি-জাতির প্রাচীন শাস্ত্রগ্রন্থ কানেক্ট টু মাইএসকিউএল ফাংশন বাতলান চাই localhostপোর্টে 33060, যা এর সাথে সংযুক্ত হবে mysql-server.comপোর্টে 3306। আপনি অবশ্যই localhostপোর্টে এখনও সংযোগ 3306করতে পারেন, তাই আপনি এখনও স্থানীয় mysqlসার্ভারটি ব্যবহার করতে পারেন ।


4
সেরা ব্যাখ্যা আমি কিছুক্ষণ পড়েছি। উদাহরণস্বরূপ যেমন স্থানীয়ভাবে ইনস্টল করা পরিবেশ থেকে দূরবর্তী ডাটাবেস অ্যাক্সেস করার সময় এটি খুব কার্যকর। পাবলিক / প্রাইভেট কী প্রমাণীকরণের সাথে ভাল কাজ করে। পাসওয়ার্ড সহ নয় কারণ আমি পাসওয়ার্ডগুলি পাস করার কোনও উপায় খুঁজে পাইনি।
ম্যাট ব্যানার্ট

পুরো ব্যাখ্যাটির কারণে এই উত্তরটিকে সেরা হিসাবে গ্রহণ করা।
জ্যাকব

চমৎকার উত্তর! যাইহোক, প্রক্রিয়াটি এখনও ঠিক কাজ করছে বিবেচনা করে এর -9জন্য প্রয়োজন হয় না kill;-)
লুসিও পাইভা

47

এটি আপনার টার্মিনাল থেকে খোলা সমস্ত ssh সেশনকে হত্যা করবে।

sudo killall ssh

এটি বলে যে 'কোনও মিলের প্রক্রিয়া পাওয়া যায় নি'।
জ্যাকব

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

4
ঠিক আছে যদি আপনি এটির পরিবেশের পরিবেশ হয় তবে আপনি এটি করতে চাইবেন না ... আপনি অন্য সমস্ত অ্যাডমিনকে সরিয়ে দেবেন
টেক্সাসব্রুস

12
দৌড়ানো killall sshএকটি বরং বেপরোয়া আদেশ। আপনার ps aux | grep sshএসএস টানেলের প্রক্রিয়াটির নির্দিষ্ট প্রক্রিয়া আইডিটি আবিষ্কার করতে আমি আপনার প্রক্রিয়া তালিকা অনুসন্ধান করার পরামর্শ দিচ্ছি (যেমন উপরের @ সিমন্টের পরামর্শে)। তারপরে আপনি বিশেষভাবে পিডকে মেরে ফেলতে পারেন।
বেন

একটি ভাল সুযোগ আছে আপনি তাদের সমস্তকে হত্যা করতে চাইবেন না।
wobbily_col

23

দ্রষ্টব্য: মন্তব্য হিসাবে কোড ব্লক সমর্থন করে না উত্তর হিসাবে যুক্ত করা।

আমার মতে এটি ব্যবহার না করাই ভাল -fএবং পরিবর্তে কেবল প্রক্রিয়াটিকে স্বাভাবিক হিসাবে ব্যাকগ্রাউন্ড করুন &। এটি আপনাকে খুন করার জন্য সঠিক পিড দেবে:

ssh -N -L1234:other:1234 server &
pid=$!
echo "waiting a few seconds to establish tunnel..."
sleep 5
... do yer stuff... launch mysql workbench whatever
echo "killing ssh tunnel $pid"
kill $pid

বা আরও ভাল, কেবল এটি একটি মোড়ক স্ক্রিপ্ট হিসাবে তৈরি করুন:

# backend-tunnel <your cmd line, possibly 'bash'>
ssh -N -L1234:other:1234 server &
pid=$!
echo "waiting a few seconds to establish tunnel..."
sleep 5
"$@"
echo "killing ssh tunnel $pid"
kill $pid

backend-tunnel mysql-workbench

backend-tunnel bash


12
ব্যবহার -fকরতে পারবেন sshযখন টার্মিনাল সেশন পটভূমি ঠেলে মতো বন্ধ করা হয় অধিবেশন এমনকি অবিরত। দখল pidব্যবহার ps aux | grep ssh | grep <LOCAL-PORT>প্রশংসনীয় তুচ্ছ হয়।
Simont

4
আপনি যেভাবে ব্যাকগ্রাউন্ড করেন না তা নির্ধারণ না করে @ সিমনট ব্যাকগ্রাউন্ড কাজ থেকে ফিরে আসা স্পষ্ট পিড ব্যবহার করা নিরাপদ। যদি আপনার একাধিক ssh প্রক্রিয়া চলমান থাকে তবে আপনি খারাপ সময়
কাটাতে পারবেন

ব্যবহার -fএছাড়াও, লগইন পাসওয়ার্ড স্থানীয় ব্যবহারকারী প্ররোচনা প্রয়োজনে সুবিধা আছে। আপনি যদি ব্যবহার করেন তবে &সেই প্রম্পটটি ব্যবহারকারীর দ্বারা দেখা যাবে না যতক্ষণ না তারা প্রক্রিয়াটিকে অগ্রভাগে নিয়ে আসে (যেমন ব্যবহার করে fg) by
বিডোসারর


4
প্রথমবার আপনার <block-portT> প্রক্রিয়াকরণের পিডে ঘটে যা এতে 'ssh' পাঠ্যও অন্তর্ভুক্ত থাকে (যেমন অন্য ssh বা sshd প্রক্রিয়া বা নামে 'ssh' দিয়ে একটি ফাইল সম্পাদনা করা) আপনি বুঝতে পারবেন যে এটি কাছে, যখন সহজ পরিস্থিতিতে সুবিধাজনক, বুলেটপ্রুফ নয়
হারুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.