ইতিমধ্যে প্রতিষ্ঠিত এসএসএইচ চ্যানেল ব্যবহার করা


50

দুটি মেশিনের মধ্যে আমার ইতিমধ্যে প্রতিষ্ঠিত এসএসএস সংযোগ রয়েছে।

ইতিমধ্যে খোলা সংযোগটি ব্যবহার করে এবং অন্য ssh অধিবেশন না চালিয়ে কোনও শেল স্ক্রিপ্ট থেকে যে শেল স্ক্রিপ্ট থেকে রিমোট মেশিনে কমান্ড প্রেরণের আছে?

উত্তর:


56

আপনি যদি আগে থেকে পরিকল্পনা করেন তবে ওপেনএসএইচ-এর সাম্প্রতিক পর্যায়ে পর্যাপ্ত সংস্করণগুলি সহ এটি খুব সহজ।

প্রথমবার একটি মাস্টার সংযোগ খুলুন। পরবর্তী সংযোগগুলির জন্য, বিদ্যমান মাস্টার সংযোগের মাধ্যমে রুট স্লেভ সংযোগগুলি। আপনার মধ্যে ~/.ssh/config, সংযোগ ভাগ করে নেওয়া স্বয়ংক্রিয়ভাবে ঘটবে:

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

আপনি যদি বিদ্যমান সংযোগ হিসাবে একই (ব্যবহারকারী, পোর্ট, মেশিন) এর জন্য কোনও ssh সেশন শুরু করেন তবে দ্বিতীয় অধিবেশনটি প্রথমটিতে সুর করা হবে। দ্বিতীয় সংযোগ স্থাপনের জন্য কোনও নতুন প্রমাণীকরণের প্রয়োজন নেই এবং এটি খুব দ্রুত।


দেখে মনে হচ্ছে দ্বিতীয়টি / var / লগ / সুরক্ষিত বা /var/log/auth.log এ নিবন্ধভুক্ত হবে না। তবে, দ্বিতীয়টি / var / লগ / ডাব্লুটিএমপি-তে নিবন্ধিত হবে?
SOUser

@ শিচেনলি /var/log/secureএবং /var/log/auth.logলগ এসএসএইচ সংযোগগুলি; একটি দাস সংযোগ সেখানে উপস্থিত হয় না কারণ এটি একটি বিদ্যমান সংযোগে পিগব্যাক করে। যদি আপনার ssh অধিবেশন একটি টার্মিনাল বরাদ্দ করে (যেমন ssh somehostকোনও কমান্ড সরবরাহ করা হয় না, বা ssh -t), এটি (সাধারণত) লগ ইন হয় wtmp, নির্ধারিতভাবেই যে টার্মিনালটি উপস্থিত হয়েছে (সংযোগ স্থাপনের জন্য যে পদ্ধতিটি ব্যবহৃত হত, এসএসডিডি, টার্মিনাল এমুলেটর অ্যাপ্লিকেশন,…)।
গিলস

2
আপনি এটি ব্যবহার করতে পারেন ControlPersist 600যা সকেটটি স্বয়ংক্রিয়ভাবে মোছার আগে অকেজো হয়ে যাওয়ার কয়েক সেকেন্ডের বিলম্ব। অন্যথায় মাস্টার সংযোগ শেষ হলে এটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে। দূরবর্তী অবস্থান থেকে কমান্ডের একটি সিরিজ কার্যকর করার পক্ষে এটি ভাল নয় (যেমন, বিভিন্ন ফোল্ডারে

2
আপনি যদি বিশ্বব্যাপী কনফিগারেশনটি সম্পাদনা করতে না চান তবে আপনি এসএসএইচ ক্লায়েন্টের বিকল্পগুলি -S(সকেট নির্দিষ্ট করুন ) এবং -M(মাস্টার সংযোগ তৈরি করতে পারেন) ব্যবহার করতে পারেন ।
ইয়াঙ্কি

22

এনসি সরঞ্জাম এবং এসএসএস টানেল ব্যবহার করে এটি অর্জন করা বেশ সহজ ।

1. খোলা এসএসএস টানেল

আপনার ssh সেশনে ~Cএকটি নতুন লাইনে টাইপ করুন। আপনি ssh "পরিষেবা কনসোল" প্রম্পট পাবেন যা দেখতে এটির মতো দেখাচ্ছে:

ssh> 

এসএসএস টানেলটি খুলতে স্থানীয় ফরোয়ার্ড কমান্ডটি টাইপ করুন:

ssh> -L22000:targethost:22001
Forwarding port.

targethostআপনি যে মেশিনে সংযুক্ত আছেন তার হোস্টনাম বা আইপি ঠিকানা Where

এখন, ধরে নিলাম টার্গেট মেশিনে ssh সার্ভারটি টানেলগুলি নিষিদ্ধ করার জন্য কনফিগার করা হয়নি, আপনার কাঙ্ক্ষিত সংযোগের ফরোয়ার্ডিং রয়েছে: sshআপনার মেশিনের ক্লায়েন্টটি 22000 পোর্ট শুনে, এবং এটি 22001 বন্দরে প্রেরিত যে কোনও ট্র্যাফিককে ফরোয়ার্ড করবে targethost

2. রিমোট মেশিনে একটি নেটওয়ার্ক সার্ভার শুরু করুন

এটি আপনার ইতিমধ্যে খোলা ssh সেশনে নিম্নলিখিত কমান্ডটি প্রবেশ করার মতো সহজ:

remote$ nc -l localhost 22001 | sh

এটি 22001 পোর্টে একটি টিসিপি সার্ভার শোনার সূচনা করবে - যা আমাদের এসএস টানেলের টার্গেট পোর্ট - এবং প্রাপ্ত ডেটা (সম্ভবত, শেল কমান্ড) একটি targethostশেলের নজরে নিয়ে যাবে।

৩. আপনার স্ক্রিপ্টটি টানেলের উপরে প্রেরণ করুন

local$ cat yourscript.sh | nc localhost 22000

এটি স্ক্রিপ্টের দেহটিকে আপনার এসএস টানেলের কাছে প্রেরণ করবে এবং এটির একটি শেলের মাধ্যমে শেষ হবে targethost। Ssh সেশনে আপনি আপনার টার্মিনালে স্ক্রিপ্টের আউটপুট দেখতে পাবেন।


আমি আরও লক্ষ করব যে এই দৃশ্যে ssh টানেল (পদক্ষেপ 1) কঠোরভাবে প্রয়োজন হয় না; আপনি সার্ভারটি খোলা শুরু করতে এবং সরাসরি এটির সাথে সংযোগ স্থাপন করতে পারেন। তবে লক্ষ্য হোস্টটি সরাসরি পৌঁছাতে না পারলে আপনাকে টানেলটি ব্যবহার করতে হবে (উদাহরণস্বরূপ কোনও NAT এর পিছনে রয়েছে), অথবা ssh এনক্রিপশনটি পছন্দসই রয়েছে।


3
দুর্দান্ত উত্তর। প্রযুক্তিগতভাবে, পরিষেবা কনসোলে ~উঠতে , চরিত্রটি অবশ্যই একটি নতুন লাইনের পরে আসতে হবে, সম্ভবত LF ~ Cএটি আরও ভাল ক্রম ence
অ্যালেক্সিয়াস

@ অ্যালেক্সিয়াস, সঠিক
ulidtko

আশ্চর্য কৌশল! রেকর্ডের জন্য, ssh ম্যান পৃষ্ঠাটি এটি সম্পর্কে আরও কিছু তথ্য দেখায় ("এসক্রপ্যাক্ট বর্ণনাকারী" নামক বিভাগে স্ক্রোল করুন)
কার্লস সালা

@ কার্লেসালা এটিও জেনে রাখা ভাল less, সাধারণ ডিফল্ট পেজার, এমন অনুসন্ধানকে সমর্থন করে যা আপনার কীওয়ার্ডগুলি জানলে আপনাকে কিছু স্ক্রোলিং বাঁচাতে পারে: কেবল টাইপ করুন man ssh /ESCAPEএবং আপনি সেখানে রয়েছেন ।
ulidtko

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