@ মম্পন্টস / @ জাভিরের উত্তরটির আরও একটি পরিবর্তন
ssh user@remoteserver -L 9999:localhost:9999 'socat TCP-LISTEN:9999,fork,bind=localhost UNIX-CONNECT:/var/run/mysqld/mysql.sock& pid=$!; trap "kill $pid" 0; while echo -ne " \b"; do sleep 5; done'
পরিষ্কারক
ssh user@remoteserver -L 9999:localhost:9999 '
socat TCP-LISTEN:9999,fork,bind=localhost UNIX-CONNECT:/var/run/mysqld/mysql.sock&
pid=$!
trap "kill $pid" 0
while echo -ne " \b"; do
sleep 5
done
'
অনুকূল
- Ss.7 এর আগে ওপেনশে কাজ করে (সেন্টস OS এর মতো)
- রিমোট সার্ভারে পুনরায় চাপ দেওয়ার পরিবর্তে এসএসটি সমাপ্তিতে সস্যাটকে হত্যা করে
- অ-পাবলিক ssh লগইনকে অনুমতি দেয় (আইজকের সমাধানের বিপরীতে)
বৈশিষ্ট্য
- যেহেতু
-fবিকল্পটি ব্যবহার করা হয়নি, আপনি পাবলিক কী ব্যবহার করতে পারেন এবং পটভূমিতে চলতে &পারেন বা ইন্টারেক্টিভভাবে লগ ইন করতে এবং Ctrl + Z ব্যবহার করতে পারেন $!এবং পিড সংরক্ষণের জন্য এটি ব্যবহার করতে পারেন ।
CONS
-fSsh বিকল্পটি সহজেই ব্যবহার করতে পারবেন না , কারণ আপনি সেইভাবে ssh এর পিড হারাবেন। এই পদ্ধতিটি অগ্রভাগে দৌড়ানোর উপর নির্ভর করে এবং হত্যা করতে Ctrl + C।
- আরও জটিল
ব্যাখ্যা
socat ...& - দূরবর্তী সার্ভারে ব্যাকগ্রাউন্ডে সোকাট চালান
pid=$! - পিড সংরক্ষণ করুন
trap kill\ $pid 0- kill $pidবাশ অবসান চালানো
while :; sleep... - অসীম লুপে বসুন
echo -ne \ \b- ব্যাকস্পেসের পরে ইকো স্পেস। Ssh সংযোগ বিচ্ছিন্ন হওয়ার সাথে সাথে এটি ব্যর্থ হয়। একটি সহ sleep 5, এর অর্থ এই যে socatssh এর পরে 5 সেকেন্ড পর্যন্ত চলতে পারে
নোট: আসলে Docker, পোর্ট ব্যবহার পরীক্ষিত 2375, /var/run/docker.sockএবং এনভায়রনমেন্ট ভেরিয়েবল DOCKER_HOST='tcp://localhost:2375'কিন্তু মাইএসকিউএল সব একই জন্য কাজ করা উচিত
হালনাগাদ
এসএসএইচ নিয়ন্ত্রণগুলি ব্যবহার করে , আপনি -fআমার উপায় ব্যবহার করে পতাকাটি ব্যবহার করতে পারেন , কেবল নীচের পতাকাগুলি যুক্ত করুন
-f -o ControlPath=~/.ssh/%C -o ControlMaster=auto
এবং আপনি পাবেন
ssh -f -o ControlPath=~/.ssh/%C -o ControlMaster=auto user@remoteserver -L 9999:localhost:9999 'set -m; socat TCP-LISTEN:9999,fork,bind=localhost UNIX-CONNECT:/var/run/mysqld/mysql.sock& pid=$!; trap "kill $pid" 0; while echo -ne " \b"; do sleep 5; done'
এখন আপনি ব্যবহার করে নিয়ন্ত্রিত সমস্ত সেশন শেষ করতে পারেন
ssh -o ControlPath=~/.ssh/%C -O exit remoteserver
-oবিকল্প আপনার সেভ করা যায় .ssh/configফাইল, অথবা আপনি -S পরিবর্তে ব্যবহার করতে পারেন (কিন্তু আপনি এখনও প্রয়োজন হবে -o ControlMaster)