একটি মধ্যবর্তী সার্ভারের মাধ্যমে আমি কীভাবে একটি ফাইল এসসিপি করব?


15

আমি সাইনগুইন উইনএক্সপিতে ব্যবহার করছি (ব্যাশ শেল সহ)। আমি আমার লোকালহোস্ট থেকে একটি রিমোট মেশিন - হোস্ট 2-তে কোনও ফাইল এসসিপি করতে চাই। যাইহোক, আমি কেবলমাত্র একটি মধ্যবর্তী মেশিনে - এসএসএইচ করতে পারি - হোস্ট 1 এবং তারপরে এসএসএইচ থেকে হোস্ট 2 এ। (দ্রষ্টব্য, আমি আমার লোকালহোস্ট থেকে হোস্ট 2 অ্যাক্সেস করতে পারি না)।

আমি ভেবেছিলাম টানেলিংটি আমার উত্তর, তবে যখন আমি কোনও টানেল স্থাপনের চেষ্টা করি

ssh -L 9999:localhost:9998 dalvarado@host1 'ssh -L 9998:localhost:1234 -N dalvarado@host2'

কিন্তু এই কমান্ডটি টাইপ করে এবং এন্টার টিপানোর পরে, সিস্টেমটি কেবল স্তব্ধ হয়ে যায়। কোনও টানেল সেটআপ করার পরে কোন ফাইল এসসিপি দেওয়ার উপযুক্ত উপায় কী?

ধন্যবাদ, -


2
সদৃশ superuser.com/questions/174160/... - একটি সারসংক্ষেপ জন্য নিচে আমার উত্তর দেখুন।
— jmetz

ব্যবহারকারীর মীর ডি থেকে : এছাড়াও সার্ভারফল্ট
— প্রশ্নগুলি

উত্তর:


17

এটি ইতিমধ্যে এখানে সেরা উত্তর দেওয়া হয়েছে ।

সংক্ষিপ্তসার হিসাবে: নিম্নলিখিতটি লিখুন ~/.ssh/config

Host target.machine
User          targetuser
HostName      target.machine
ProxyCommand  ssh proxyuser@proxy.machine nc %h %p 2> /dev/null

এবং তারপরে আপনি কেবলমাত্র scpপ্রক্সি.ম্যাচিনের মাধ্যমে প্রক্সি করতে চাইলে টার্গেট.ম্যাচিন করুন!

এছাড়াও এর জন্য কাজ করে ssh, সুতরাং লক্ষ্য মেশিনে আপনার সময় ssh-ing সাশ্রয় করবে।

ক্রেডিট ব্যবহারকারী 24925 কে যেতে হবে যারা 2011 সালে এর উত্তর দিয়েছিল।


13

একটি এসএসএইচ টানেল সেট আপ করতে, নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করুন:

ssh -L 9999:host2:22 user@host1

এই কমান্ড সংযোগ স্থাপন করে host1যেমন userকম্পিউটারের তে পোর্ট 22 কমান্ডের উপর এবং টানেল বন্দর 9999 host2। -Nalচ্ছিক, বা আপনি প্রয়োজন মতো সেশনটি বাঁচিয়ে রাখার মতো topবা ব্যবহার করতে পারেন watch।

তারপরে, scpলোকালহোস্টে কেবল হোস্ট 2 এ: 9999।


1
আমি যখন এই কমান্ডটি চালাচ্ছি, তখন কি আমি হোস্ট 1 এ লগ ইন করব? এছাড়াও, এই কমান্ডটি চালানোর পরে, আমি আরেকটি বাশ শেলটি খুললাম, এবং "scp hello.txt লোকালহোস্ট: 9999" চালিয়েছি, তবে একটি "ssh: হোস্ট লোকালহোস্ট পোর্ট 22 তে সংযোগ পেয়েছি: সংযোগ অস্বীকার করেছে" ত্রুটি। আমি এখানে কি ভুল করছি?
— ডেভ

3
আপনি যখন এই আদেশটি চালাবেন, আপনি হোস্ট 1 এর সাথে সংযুক্ত থাকবেন, হ্যাঁ। scpযদিও আপনার কমান্ড সিনট্যাক্সটি ভুল। আপনি যে হিসাবে লগইন করতে চান সেখানে ব্যবহারকারী scp -P 9999 hello.txt user@localhost:/path/to/destination/fileকোথায় userএটি চেষ্টা করুন host2।
— বৃষ্টি

1
@ রাইন, আপনি এই উত্তরটি মূল উত্তরে রেখে যেতে পারেন;)
— ডেমিউ

5

যেহেতু OpenSSH- র 7.3 , আপনি ব্যবহার করতে পারেন -Jবা -o ProxyJumpদুর্গ / লাফ হোস্ট নির্দিষ্ট করতে। অতএব, এসএসএইচ এর node2মাধ্যমে node1:

ssh -J you@node1 you@node2

এসসিপির পক্ষে -Jযুক্তি নেই, তবে এটি অনুমতি দেয় -o, সুতরাং এটি কাজ করে:

scp -o ProxyJump=you@node1 file.txt you@node2:~

3

আপনি প্রথমে হোস্ট 1 এ ফাইলটি স্ক্রিপ করতে পারেন:

scp file dalvarado@host1:.

তারপরে এটি হোস্ট 2 এ পেতে এটি করুন:

ssh -t dalvarado@host1 'scp file dalvarado@host2:.'

-tবিকল্পে sshবাহিনী এটি একটি সিউডো-টার্মিনাল বরাদ্দ করা, যা সহজে তৈরি করতে পারে scphost1 উপর একটি পাসফ্রেজ / পাসওয়ার্ড লেখার অনুরোধ জানানো হবে। আপনার যদি ssh-এজেন্ট চলমান এবং সর্বত্র কনফিগার করা থাকে, আপনাকে পাসফ্রেজ / পাসওয়ার্ডের জন্য অনুরোধ করা উচিত নয়।

আমি এই বিকল্পটি অফার করছি, কারণ আপনি যদি একটি টানেল ব্যবহার করেন তবে আপনার এখনও দুটি কমান্ডের প্রয়োজন হবে: একটি টানেলটি সেটআপ করতে এবং একটি তার মাধ্যমে ফাইলটি অনুলিপি করার জন্য। এটি সহজ বলে মনে হচ্ছে।


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