একাধিক হুপের মাধ্যমে এসএসএইচ টানেলের মাধ্যমে ডেটা অনুলিপি করুন


14

আমাদের প্রশ্নে দুটি প্রধান পরিবেশ রয়েছে:

উন্নয়ন ও কিউএ

প্রতিটি পরিবেশের দুটি সার্ভার থাকে:

  • জাম্প বক্স
  • অ্যাপ্লিকেশন সার্ভার

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

ফায়ারওয়ালের সৌজন্যে জায়গায় কয়েকটি নিয়ম রয়েছে:

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

আমাদের সমস্যা

আমরা এতে বিষয়বস্তু (670 GB) এর অনেক আছে DEVELOPMENT APPLICATION SERVER, এবং আমরা এই পেতে প্রয়োজন QA APPLICATION SERVER

জাম্প বাক্সগুলিতে এই ডেটা অনুলিপি করা কোনও বিকল্প নয় কারণ তাদের প্রয়োজনীয় জায়গার অভাব রয়েছে।

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

আমাদের কোন বিকল্প আছে? এটি একটি মরিয়া পরিস্থিতি হয়ে উঠছে এবং সময়টির মূল বিষয়টি রয়েছে। আমাদের কাছে ডেটা ডাউনলোড করার এবং এটি পুনরায় আপলোড করার সময় নেই। সার্ভারে নেটওয়ার্ক জুড়ে অনুলিপি করা দ্রুত চলে যাবে, কারণ এটি গিগাবিট সংযোগ।


2
একবার সংযোগ স্থাপন হয়ে গেলে আপনি যে কোনও উপায়ে অনুলিপি করতে পারেন: $ devel_host $ tar -cf - | ssh -t jumbox 'ssh app_serv "tar -xf -" "বা তারার বাইরে অন্য উপায়।
অ্যালেক্স_উজব

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

ঠিক ঠিক, "পাইপিং" "টার" একটি সহজ সমাধান simple
অ্যালেক্স_উজব

উত্তর:


15

এখন পর্যন্ত, সবচেয়ে সহজ উপায় এটি কেবলমাত্র scp- এর মাধ্যমে অনুলিপি করা। এছাড়াও, এই বাক্য গঠনটি অন্য কয়েকটি পরামর্শের মতো নয়।

আপনি স্বাচ্ছন্দ্যের জন্য এই বাক্য গঠনটিকে বীট করতে পারবেন না। এটি আপনাকে সম্ভাব্য জটিল পাইপগুলি বিবেচনা করার ঝামেলা ছাড়াই পুনরাবৃত্তভাবে অনুলিপি করতে, আরএসসিএনসি বা আপনি যা চান তা করতে দেয়। এই বাক্য গঠনটি স্বজ্ঞাতভাবে পরিষ্কার, সিস অ্যাডমিনিদের দ্বারা আরও সহজেই সমর্থনযোগ্য যা আপনাকে অনুসরণ করে এবং বিড়ালের অকেজো ব্যবহার করে না ।

scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to

থেকে scp কমান্ড man পৃষ্ঠা : -3দুই দূরবর্তী হোস্ট সিস্টেমের মধ্যে কপি স্থানীয় হোস্ট মাধ্যমে স্থানান্তরিত করা হয়। এই বিকল্পটি ব্যতীত দুটি দূরবর্তী হোস্টের মধ্যে ডেটা সরাসরি অনুলিপি করা হয়। নোট করুন যে এই বিকল্পটি অগ্রগতি মিটারটিকে অক্ষম করে।

নীচের উদাহরণে

  • আপনার ওয়ার্কস্টেশনের নাম দেওয়া হয়েছে ম্যাকবুক-প্রো।
  • দেব জাম্প বক্সের নাম দেওয়া হয়েছে ডেভজম্পসার
  • ডেভ অ্যাপ্লিকেশন সার্ভারটির নাম দেওয়া হয়েছে ডেপ অ্যাপ্লিকেশনসভার
    • .Local নামক ল্যান ডিএনএস জোনে রয়েছে
  • কিউএ জাম্পবক্সের নামকরণ করা হয়েছে কজম্পসভার
  • কিউএ অ্যাপ্লিকেশন সার্ভারটির নাম দেওয়া হয়েছে ক্যাপেলিকেশন সার্ভার
    • ল্যান ডিএনজেড জোনে অবস্থিত .local
  • আমরা একটি 670 গিগাবাইট / ইত্যাদি / হোস্ট ফাইলের পরীক্ষার অনুলিপি করব ;-)
  • অনুমান করা হয় যে আপনি এসএসএইচ পাবলিক কী প্রমাণীকরণ কনফিগার করেছেন।



এখানে একটি ~ / .ssh / কনফিগারেশন ফাইল রয়েছে যা আপনার ওয়ার্কস্টেশন থেকে অ্যাপ্লিকেশন সার্ভারগুলিতে যথাযথ জাম্প (ওরফে বাশান সার্ভার) এর মাধ্যমে সরাসরি অ্যাক্সেস সেট করে।

ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $ বিড়াল ~ / .ssh / কনফিগারেশন
হোস্ট *
  সার্ভারআলাইভআইন্টারভাল 60
হোস্ট ডেভেলপ্লিকেশনসভার
  হোস্টনাম ডেভপ্লিকেশনসভার.লোকাল
  প্রক্সিকমন্ড ssh -i ~ / .ssh / id_rsa ব্যারিচাপম্যান @devjumpserver.example.com -W% ​​এইচ:% পি
  ব্যবহারকারী ব্যারিচাপম্যান
হোস্ট qaapplicationserver
  হোস্টনাম qaapplicationserver.local
  প্রক্সিকমন্ড ssh -i ~ / .ssh / id_rsa ব্যারিচাপম্যান @ qajumpserver.example.com -W% ​​এইচ:% পি
  ব্যবহারকারী ব্যারিচাপম্যান

ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $



লক্ষ্য সার্ভারে ফাইল উপস্থিতির জন্য পরীক্ষা করা, এটি সেখানে থাকবে না।

ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $ এসএসএইচ ক্যাপেলিকেশনসভার এলএস / টিএমপি / হোস্ট
ls: টিএমপি / হোস্টগুলি অ্যাক্সেস করতে পারে না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
সিগন্যাল দ্বারা হত্যা করা হয়েছে 1।
ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $



এখন আসুন দেব অ্যাপ্লিকেশন সার্ভার থেকে আপনার ওয়ার্কস্টেশনের মাধ্যমে কিউএ অ্যাপ্লিকেশনটিতে একটি ফাইল অনুলিপি করুন।

ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $ স্কিপ -৩ ডেপ্যাপ্লিকেশনসভার: / ইত্যাদি / হোস্টগুলি ক্যাপেলিকেশনসভার: / টিএমপি /
সিগন্যাল দ্বারা হত্যা করা হয়েছে 1।
সিগন্যাল দ্বারা হত্যা করা হয়েছে 1।
ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $



আসুন এখন কিউএ অ্যাপ্লিকেশন সার্ভারে অনুলিপি করা ফাইলটির উপস্থিতি যাচাই করা যাক। এবার সেখানে থাকবে।

ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $ এসএসএইচ ক্যাপেলিকেশনসভার এলএস / টিএমপি / হোস্ট
/ Tmp / 'হোস্ট
সিগন্যাল দ্বারা হত্যা করা হয়েছে 1।
ম্যাকবুক-প্রো: ~ ব্যারিচাপম্যান $ 

বিঃদ্রঃ

প্রক্সিকম্যান্ড সংযোগ বন্ধ করার সময়, আপনি "সংকেত 1 দ্বারা নিহত" সতর্কতা বার্তাটি দেখতে পাবেন। এটি এসএসএইচ প্রক্সিকম্যান্ড সংযোগটি ছিঁড়ে ফেলেছে এবং এটি সম্পর্কে উদ্বিগ্ন হওয়ার মতো কিছুই নয়। LogLevel Quietআপনার ঘাঁটি হোস্ট কনফিগার স্তরে যোগ করে আপনি এ থেকে মুক্তি পেতে পারেন ।


চিয়ার্স, এটি আমাদের সমস্যার সমাধান করে। মেরি ক্রিসমাস!
ব্যারি চ্যাপম্যান

"বেস্ট হোস্ট কনফিগার স্তনজা" বলতে কী বোঝ? নিবন্ধন করুন
অ্যান্ড্রু ওল্ফ 16

আমি প্রতিটি "হোস্ট" লাইন এবং এর অধীনে থাকা কনফিগারেশনগুলিকে একটি স্তন হিসাবে বিবেচনা করি (কবিতার মতো in) আপনি যদি আপনার ঘাঁটি "হোস্ট" লাইনের নীচে "লগইভেল শান্ত" যোগ করেন তবে এটি কেবল সেই হোস্টের জন্যই প্রযোজ্য।
ব্রেভনিউক্রেসি

8

পাইপ!

যদি ইন্টারনেট টিউবের একটি সিরিজ হয় তবে ইউনিক্স হ'ল পাইপের একটি সিরিজ - এরকম কিছু:

cat ginormous-file | ssh user@host1 "cat | ssh user@host2 \"cat >out\" "

কাজ করা উচিত.

আপনার যদি আরও হোস্টকে অতিক্রম করতে হয় তবে প্রয়োজন অনুসারে আরও পাইপ (এবং আরও বেশি নেস্টেড স্তরগুলি \-caped উদ্ধৃতি) যুক্ত করুন। (তবে নোট করুন যে পাইপলাইন / পালানো যদি এত জটিল হয়ে যায় যে আপনাকে পলায়নের জন্য দ্বিগুণ থাকতে হবে তা নির্ধারণ করতে আপনার আঙুলের উপর নির্ভর করে গণনা করতে হবে সম্ভবত পরাজয় স্বীকার করার এবং সঠিক ভিপিএন স্থাপনের সময় এসেছে !)


1
যেমন অ্যালেক্স_উইউউ তার মন্তব্যে উল্লেখ করেছেন যে আপনার যদি কোনও কিছুর জন্য মধ্যবর্তী ফাইলের প্রয়োজন না হয় তবে আপনি কেবল tarচারপাশের আউটপুটটি পাইপ করতে পারেন । (এছাড়াও আপনি না প্রয়োজনcat পাইপলাইন এর মধ্যবর্তী পর্যায়ে - sshstdin খেতে পার এবং তা রিলে খুশি। catশুধু আমার ভাল বোধ করে তোলে এবং একটি স্থানধারক অন্যান্য দরকারী কমান্ড করার জন্য আপনাকে ব্যবহার করতে চাইতে পারেন, মত হল tee।)
voretaq7

আমি মনে করি ওপি-র সমস্যাটি এমন কোনও মেশিন নেই যা উভয়েরই ডেটা রয়েছে এবং সংযোগ তৈরি করতে পারে, বা এমন কোনও মেশিন নেই যা সমস্ত কিছু এবং প্রত্যেককে দেখতে পারে (সমস্ত পাইপের সংযোগকারী হিসাবে কাজ করতে)।
ম্যাডহ্যাটার

1
@ ম্যাডহ্যাটার যদি এটি হয় তবে আমাদের দুটি উত্তরের সংমিশ্রণটি কাজ করবে (একটি সার্ভিসের জম্প সার্ভারের এসএসএইচ বন্দরে ফিরে একটি পোর্ট ফরওয়ার্ড করে ডেভ সার্ভারের সাথে সংযোগ স্থাপন করুন, তবে সেই বন্দরের উপরে এসএসএইচ পাইপলাইন চালনা করুন)। এটি অবশ্যই সমাধানটিকে ক্রমাগত ঘৃণ্য করে VPN! NOW!
তুলেছে

হ্যাঁ কেন. হ্যাঁ, তারা হবে। আশা রাখি,!
ম্যাডহ্যাটার

এর অর্থ কি মধ্যবর্তী সার্ভারের (এই ক্ষেত্রে user@host1) cat ginormous-fileকোনও মুহুর্তে কোনও পর্যায়ে পুরো স্টোরেজটি থাকবে ? বা ডেটা সরাসরি পাঠানো হয় user@host2? নাকি কোনওরকম ধারাবাহিক? এটি কীভাবে tarপ্রাসঙ্গিক? আমার ধারণা এটি দ্বিতীয় থেকে শেষ প্রশ্নটির সাথে প্রাসঙ্গিক। এই প্রশ্নগুলোর মধ্যে কেউই BTW অলঙ্কৃত হয় ...
hello_there_andy

1

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনার কাছে দুটি অ্যাপ সার্ভার (অ্যাপ-কিএ এবং অ্যাপ-ডেভ) সুরক্ষার জন্য দুটি জাম্প সার্ভার রয়েছে (জাম্প-কিএএ এবং জাম্প-দেব); জাম্প সার্ভারগুলি একে অপরের সাথে সংযুক্ত করতে পারে; প্রাসঙ্গিক জাম্প সার্ভার ব্যতীত অন্য কোনও বক্স সংশ্লিষ্ট অ্যাপ্লিকেশন সার্ভারে সংযুক্ত করতে পারে না। অ্যাপ্লিকেশন সার্ভারগুলি নূরে যেতে পারে। অ্যাপ্লিকেশন থেকে একটি অ্যাপ্লিকেশন-কে এপিএ-কিএতে স্থানান্তরিত করতে হবে। উভয় জাম্প সার্ভারের ডেটার অন্তর্বর্তী অনুলিপি করার জায়গার অভাব রয়েছে।

আপনি এটি ssh টানেলিং দিয়ে সমাধান করতে পারেন। আমরা একটি রিমোট অ্যাপ্লিকেশন সার্ভারের সাথে একটি সংযোগ স্থাপন করেছি, একটি রিমোট টানেল বহন করছি যা তার জাম্প সার্ভারের অব্যবহৃত বন্দরে ফিরে সংযোগ স্থাপন করে। আমরা একটি লাফ সার্ভার থেকে অন্য লাফ সার্ভারের সাথে একটি দ্বিতীয় সংযোগ স্থাপন করেছি, একটি টানেল বহন করে যা টানেলটির একটি থেকে দূরবর্তীভাবে এগিয়ে আসা বন্দরের ঝুলন্ত প্রান্তটি তুলে নিয়ে অন্য অ্যাপ্লিকেশন সার্ভারের ssh বন্দরে প্রেরণ করে।

টানেলগুলি সেট আপ করুন (এই কম্যান্ডগুলির প্রত্যেকটি পৃথক উইন্ডোতে চালানো দরকার jump-qa):

jump-qa% ssh app-qa -R 2345:localhost:2346
jump-qa% ssh jump-dev -L 2346:app-dev:22

আপনার এখন অ্যাপ্লিকেশন-কিএ-তে এটি সন্ধান করা উচিত, আপনি telnet localhost 2345অ্যাপ্লিকেশন-এর এসএসএস ব্যানারটি করতে এবং পেতে পারেন । এরপরে আপনি ডেটা ফাইলটি অনুলিপি করতে পারেন:

app-qa% scp -P 2345 localhost:/path/on/app-dev/data.dat data.dat

দুটি জাম্প বাক্স রয়েছে - একটি QA অ্যাপ্লিকেশন সার্ভারের সামনে এবং একটি DEV অ্যাপ্লিকেশন সার্ভারের সামনে। জাম্প বাক্সগুলি একে অপরের সাথে যোগাযোগ করতে পারে
ব্যারি চ্যাপম্যান

অন্তর্বর্তী কপির জন্য ক্লায়েন্টের কি স্থান আছে?
ম্যাডহ্যাটার

না, পর্যাপ্ত জায়গা নেই
ব্যারি চ্যাপম্যান

আপনি যখন ক্লায়েন্ট বলছেন, আপনি কোন সার্ভারের উল্লেখ করছেন?
ব্যারি চ্যাপম্যান

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