এক রিমোট সার্ভার থেকে অন্য রিমোট সার্ভারে স্কেপ করুন


15

আমার সার্ভারে একটি বড় ফাইল রয়েছে oneএবং আমি এটি twoব্যবহার করে এটি সার্ভারে অনুলিপি করতে চাই scp। আমার কীগুলি সঠিকভাবে সেটআপ হয়েছে এবং আমি আমার ডেস্কটপ থেকে উভয় সার্ভারে এসএসএস / এসপিপি করতে পারি।

আমার যে ফাইলটি অনুলিপি করতে হবে তা বড় হ'ল আমার ওয়ার্কস্টেশনের এইচডি ডি তে ফাঁকা জায়গা, তাই আমি এটি করতে চেয়েছিলাম:

scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz

তবে আমি পেয়েছি:

ssh: Could not resolve hostname one: Name or service not known

আমাদের এখানে ডিএনএস নেই (কেন আমাকে জিজ্ঞাসা করবেন না), তাই আমার এটি আমার। / .Ssh / config এ আছে:

Host one
    Hostname        <IP address of server one>
    User            jspurny

Host two
    Hostname        <IP address of server two>
    User            jspurny

যদি আমি একটি ছোট ফাইল দিয়ে চেষ্টা করি এবং এটিকে oneআমার ওয়ার্কস্টেশন থেকে এবং তারপরে স্থানান্তর করি তবে twoএটি দুর্দান্ত কাজ করে:

scp one:/opt/smallerfile.tar.gz .
scp smallerfile.tar.gz two:/opt/

মন্তব্যে প্রস্তাবিত আইপি ঠিকানাগুলি সরাসরি ব্যবহার করার সময়, আমি পেয়েছি:

$ scp jspurny@<one's IP>:bigfile.tar.gz jspurny@<two's ip>:bigfile.tar.gz
Host key verification failed.
lost connection

কোনও সমস্যা নয়:

আকারটি এখানে কোনও সমস্যা নয় - bigfile.tar.gzআমার ওয়ার্কস্টেশনটিতে সঞ্চয় করার কোনও উপায় না থাকায় এটি এই সমস্যার কেবলমাত্র "ট্রিগার" ছিল । ফাইল আকার নির্বিশেষে সমস্যা দেখা দেয়।

প্রশ্ন:

কেন আদেশ দেয়:

scp oneremote:file secondremote:file

.ssh/configএলিয়াস ব্যবহার করা বা আইপি অ্যাড্রেস সরাসরি ব্যবহার করা যদি নির্বিশেষে একটি ত্রুটি ছুড়ে দেয় ?

সলভ - ক্রম - এখনও ব্যাখ্যা খুঁজছি - আমি বড় ফাইলটিকে ছোট ফাইলগুলিতে বিভক্ত করেছি এবং আমার ওয়ার্কস্টেশনের মাধ্যমে সেগুলি একে একে স্থানান্তরিত করেছি। আমি এখনও ভাবছি কেন এটি কাজ করে না। তাই আমি কী ভুল ছিল তার কিছু ব্যাখ্যা প্রশংসা করব ..

এটি ব্যর্থ হওয়ার কারণ খুঁজে পেয়েছিল : মনে হচ্ছে আমি বোকা হয়েছি। আমি ভাবলাম যে আদেশ

scp one:file two:file

প্রতিটি সার্ভারে দুটি সংযোগ তৈরি করছিল এবং তারপরে একজনের কাছ থেকে ডেটা গ্রহণ করে তাৎক্ষণিকভাবে দুটিতে প্রেরণ করে এবং এভাবে রিলেটির মতো অভিনয় করে।

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


আপনি কি "scp jspurny @ ip_address_server_one: /opt/bigfile.tar.gz jspurny @ ip_address_server_two: /opt/bigfile.tar.gz" এর পরিবর্তে আইপি ঠিকানাগুলি ব্যবহার করার জন্য আপনার scp কমান্ডটি পরিবর্তন করার চেষ্টা করেছিলেন?

@ টিচেস্টার: আমি এখনই করেছি, তবে এটি কেবল একটি ভিন্ন ত্রুটি দেয় (সম্পাদিত প্রশ্ন দেখুন)
জান স্পর্নি

এর সাথে সম্পর্কিত? unix.stackexchange.com/questions/14187/...
SLM

@ এসএলএম না, আকার নিয়ে আমার কোনও সমস্যা নেই।
জান স্পর্ণি

যেহেতু আমি ত্রুটির ব্যাখ্যা পেয়েছি, আমি এটি নিজের উত্তর হিসাবে যুক্ত / গ্রহণ করতে চেয়েছিলাম, তবে এটি আমার কাছে কিছুটা অন্যায় বলে মনে হচ্ছে কারণ এটি সমস্যাটি সমাধান করে না। আপনি কি মনে করেন আমি মধ্যে প্রশ্ন ভিন্নরূপে বা অন্য কথায় উচিত: সার্ভার থেকে ফাইল কপি করতে কিভাবে এক সার্ভারে দুই একটি রিলে হিসাবে আমার ওয়ার্কস্টেশন ব্যবহার করছেন? অথবা আমি উত্তর হিসাবে --verbose বিকল্পটি ব্যবহার করতে এবং এটি গ্রহণ করতে আমার অক্ষমতা সম্পর্কে আমার ব্যাখ্যা যুক্ত করব ?
জানুয়ার্ন স্পর্ণি

উত্তর:


6

সরল পাইপ

এটা চেষ্টা কর:

ssh one 'cat file' | ssh two 'cat > file'

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

বিস্তৃত টানেলগুলি

আরও বিস্তৃত অ্যাপ্লিকেশনগুলির জন্য, আপনি ssh টানেল ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি এই জাতীয় কিছু চেষ্টা করতে পারেন:

ssh -R 5001:127.0.0.1:5002 one
ssh -L 5002:127.0.0.1:22 two

তারপর আপনি সংযোগ খুলতে পারে oneমেশিনে localhostবন্দর 5001এবং এটি দুইবার ফরোয়ার্ড করা হবে এবং এর একটি সংযোগ হিসেবে শেষ twoকরতে localhostবন্দর 22। এটি ssh পোর্ট, সুতরাং আপনি এটি অন্য একটি স্কিপ, বা আরএসসিএনসি, বা যেকোনো কিছুতে ব্যবহার করতে পারেন। এছাড়াও আপনি একটি শুরু করতে পারে rsyncউপর সার্ভার twoএবং পোর্ট 873 পরিবর্তে 22. অথবা আপনি ব্যবহার করতে পারে ncউভয় পক্ষের কাঁচা ডেটা স্থানান্তর করতে, একটি অবাধ পোর্ট নম্বর ব্যবহার করে।

উপরোক্ত পদ্ধতির মধ্যে প্রধান সুবিধাটি হ'ল কেবলমাত্র একটি একমুখী পাইপের পরিবর্তে আপনার দুটি মেশিনের মধ্যে দ্বি-নির্দেশমূলক টিসিপি সংযোগ রয়েছে। এইভাবে, দুটি পক্ষই তথ্য বিনিময় করতে পারে, যা ক্ষেত্রে বিশেষত গুরুত্বপূর্ণ rsync


1
ধন্যবাদ! এটি আমি যা চেয়েছিলাম ঠিক তেমন করে না , তবে আমার আসলে যা প্রয়োজন ছিল , যা দুর্দান্ত।
জান স্পর্ণি

16

এই উত্তরের সম্পূর্ণ ক্রেডিট /superuser//a/602436/142948 এ যায়

-3Scp এর জন্য আপনার বিকল্পের প্রয়োজন :

scp -3 one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz

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

http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1

অন্যথায় 2 য় উপন্যাস "দুটি" হোস্ট "ওয়ান" তে সমাধান করা হচ্ছে যা উপস্থিত থাকতে পারে না।


দুর্ভাগ্যক্রমে, এই বিকল্পটি মোটামুটি নতুন এবং এখনও সমস্ত ডিস্ট্রোজে প্রচারিত হয়েছে।
Whereswalden

2

যেহেতু আপনার সোর্স সার্ভারে ব্যবহারকারীর অ্যাক্সেস রয়েছে (এক) কেন লগইন করবেন না এবং সরাসরি সেই সার্ভারে আপনার স্কিপ কমান্ডটি চালাবেন না ... আপনি যদি ভাবনা থাকেন যে এটি খুব বেশি সময় নিবে, তবে screenস্ক্রিনের সাথে কমান্ডটি আরম্ভ করুন Ctrl+a dএবং এর সাথে পর্দা থেকে আলাদা করুন ach এটি চালানো যাক।

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

ssh user@source 'scp /path/to/file user@destination:/path/to/file'

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

0

ত্রুটি বার্তার জন্য অনুসন্ধান করা হচ্ছে: "হোস্ট কী যাচাইকরণ ব্যর্থ হয়েছে।" এখানে করা সবচেয়ে সরল জিনিস বলে মনে হবে। : আমি এই Q & A- খেতাবধারী askubuntu পাওয়া সঙ্গে, SSH সংযোগ সমস্যা "হোস্ট কি যাচাই ব্যর্থ হয়েছে ..." ত্রুটি

প্রশ্নোত্তরের উত্তরগুলির মধ্যে একটিতে প্রস্তাবিত হয়েছে যে সমস্যাটি আপনার ~/.ssh/known_hostsফাইলটিতে একটি বিরোধী প্রবেশের সাথে মিথ্যা বলে । আপনি হয় যে কোনও পাঠ্য সম্পাদক ব্যবহার করে সেই ফাইল থেকে ঝামেলা এন্ট্রি মুছতে পারেন বা আপনি এই কমান্ডটি এন্ট্রিগুলি সরাতে ব্যবহার করতে পারেন:

$ ssh-keygen -R hostname

hostnameআইপি ঠিকানা বা আপনি যে সার্ভারটির সাথে সংযোগ স্থাপনের চেষ্টা করছেন তার নাম কোথায় থাকবে। উপরের সমস্তটি উপায় দ্বারা হোস্ট দুটিতে থাকবে


আমি নিশ্চিত কিনা নিশ্চিত। আমি করতে করতে SSH oneএবং twoকোন সমস্যা ছাড়াই আমার ওয়ার্কস্টেশন থেকে সার্ভার .. সমস্যা শুরু যখন আমি রান scp one:file two:fileওয়ার্কস্টেশন থেকে। আর আছে, কোন known_hostsফাইল পারেন এক বা দুই । আমি আমার ওয়ার্কস্টেশনে দু'জনের জন্য (এমনকি একজনের নিশ্চিত হওয়ার জন্য) কীগুলি অপসারণ করার চেষ্টা করেছি কিন্তু কিছুই পরিবর্তিত হয়নি ( আপনি নিশ্চিত y / n প্রপোট বাদে)
জান স্পর্ণি

@ জনস্পর্ণী - আপনার ওয়ার্কস্টেশনটির বিষয়ে আপনার উল্লেখ করা কমপক্ষে আমার কাছে এই প্রশ্নটিতে কিছুটা বিভ্রান্তিকর হয়েছে। যখন আপনি বলেন যে আপনি আপনার ল্যাপটপ / ডেস্কটপ বোঝাতে চাইছেন। আপনি যখন বলছেন যে এটি "কাজ করে": সুতরাং আপনি এই জাতীয় কিছু করছেন: scp workstation:file one:fileএবং workstation:file two:file? অবশ্যই আপনাকে "ওয়ার্কস্টেশন: ফাইল" বলতে হবে না আমি কেবল কথোপকথনের স্বার্থে এটি স্পষ্টভাবে বলছি।
slm

ভাল আমি কী জানি যে আমি আমার ওয়ার্কস্টেশন থেকে সমস্ত কমান্ড চালিয়েছি। সুতরাং এটি আরও মত ছিল: workstation$ scp one:file fileএবং workstation$ scp file two:file। যাইহোক, আমি মনে করি এটি সমাধান করেছি। আমি এটি আমার নিজের উত্তর হিসাবে যুক্ত করব।
জানুয়ার্ন স্পর্ণি

@ জনস্পর্ণি - ঠিক আছে, খুশি হয়ে আপনি এটি আবিষ্কার করেছেন। বিটিডাব্লু প্রশ্নের জন্য ধন্যবাদ!
slm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.