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


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.