আমি অন্য হোস্টের মাধ্যমে কীভাবে কেবল এসএসএইচ করতে পারি কোনও হোস্ট থেকে কোনও ফাইল ডাউনলোড করতে পারি?


30

আমি আমার অফিসের কম্পিউটার থেকে আমার ল্যাপটপে ফাইলগুলি ডাউনলোড করতে চাই।

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

সংস্থার সার্ভারটি গ্রহণ করা কেবলমাত্র আদেশগুলি হ'ল ssh, ssh1 এবং ssh2।

আমি কীভাবে সার্ভারের মাধ্যমে আমার অফিস (দূরবর্তী) মেশিন থেকে আমার ল্যাপটপ (স্থানীয়) মেশিনে একটি ফাইল ডাউনলোড করতে পারি?


2
বিপরীত এসএসএইচ টানেল ব্যবহার করবেন? আমার উত্তর এখানে দেখুন এবং প্রয়োজন এটা খাপ খাওয়ানো: superuser.com/questions/1186905/...
ড্যারেন

1
মাল্টি হপ এসএসএইচ?
ম্যাকেনজম

উত্তর:


37

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

যদি না এটি মেশিন হয় তবে আপনি ভবিষ্যতে সংযুক্ত হতে পারবেন না, সবচেয়ে ভাল জিনিসটি আপনি এটি কনফিগার করেছেন ~/.ssh/config

আমি একটি ফাইল রাখব:

Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine

Host bastion-machine
Hostname organization-server.company.com
...

আপনি যদি ওপেনএসএসএইচ এর পূর্ববর্তী সংস্করণ ব্যবহার করছেন যা প্রক্সি জম্প সমর্থন করে না, আপনি এটি সমতুল্য দিয়ে প্রতিস্থাপন করবেন:

ProxyCommand ssh -W %h:%p bastion-machine

এবং যদি আপনার স্থানীয় ssh সংস্করণটি সত্যিই একটি প্রাচীন ছিল যা সমর্থন করে না -W:

ssh bastion-machine nc %h %p

যদিও এটি শেষেরটির জন্য প্রয়োজন যে বাশান মেশিনটি ncইনস্টল করা আছে।

এসএসএসের সৌন্দর্য হ'ল আপনি ফাইলের প্রতিটি গন্তব্য কনফিগার করতে পারেন এবং সেগুলি খুব সুন্দরভাবে স্ট্যাক করবে। সুতরাং আপনি office-machineসমস্ত সরঞ্জামে হোস্ট-নেম হিসাবে কাজ শেষ করেছেন (ssh, scp, sftp ...) যেহেতু তারা সরাসরি সংযুক্ত ছিল এবং তারা কীভাবে ssh_config ভিত্তিতে সংযুক্ত হবে তা নির্ধারণ করবে। আপনার কাছে এমন কোনও ওয়াইল্ডকার্ডও থাকতে পারে Host *.internal.company.localযাতে কোনও নির্দিষ্ট ঘাঁটি পেরিয়ে সমস্ত হোস্টের সমাপ্তি ঘটে, এবং এটি তাদের সকলের জন্যই প্রযোজ্য। একবার সঠিকভাবে কনফিগার হয়ে গেলে, একটি হপ সংযোগ বা বিশটি করার মধ্যে একমাত্র পার্থক্য ধীর সংযোগের সময় হবে।


36

আপনার যদি সাম্প্রতিক ওপেনএসএসএইচ (8.0) থাকে তবে আপনি -J(জাম্প) সুইচটি ব্যবহার করতে পারেন :

scp -J user@intermediate user@target:/path

পুরানো সংস্করণ সহ (তবে কমপক্ষে 7.৩), আপনি নির্দেশ- ProxyJumpনির্দেশ ব্যবহার করতে পারেন , হয় কমান্ড-লাইনে:

scp -o ProxyJump=user@intermediate user@target:/path

বা ssh_configফাইল হিসাবে, @ অ্যাঞ্জেল দেখায় উত্তর হিসাবে।


অন্যান্য বিকল্প আছে ProxyCommandবা পোর্ট ফরওয়ার্ডিং, যা আপনি ওপেনএসএইচএইচ এমনকি পুরানো সংস্করণে ব্যবহার করতে পারেন। এগুলি কি ওপেনএসএসএইচ মাল্টিহপ লগইন সমর্থন করে?


2
@Yochaymaganssh -J userA@orgserv userB@officecomp cat remote/path > local/path
মশবির

4
Scp কমান্ড জন্য, এটি 7.10 মধ্যে যোগ করা হয়েছিল
এঞ্জেল

4
এমনকি যদি scpসমর্থন করে না -J, এটা এখনও নতুন যথেষ্ট সমর্থন করার জন্য হতে পারে ProxyJumpবিকল্প; এই বিকল্পটি স্পষ্টভাবে ব্যবহার করে এমন অন্য যে কোনও একটি উত্তর চেষ্টা করুন।
গর্ডন ডেভিসন

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আমি এমন সমস্ত sshপ্রশ্নের উত্তরকে তুচ্ছ করছি যা configনির্দিষ্ট হোস্টগুলির জন্য আপনার পরিবর্তনের পরামর্শ দেয় যখন কাজটি করার জন্য একটি সাধারণ কমান্ড লাইন বিকল্প যথেষ্ট।
ক্লেমিচ

2
"হতাশ" মনে হচ্ছে চরম প্রতিক্রিয়া। অবশ্যই, কয়েকটি ক্ষেত্রে কমান্ড লাইনের একটি দ্রুত পরিবর্তনটি আগে কনফিগারেশন ফাইলটি পরিবর্তন করার চেয়ে সহজ। কিন্তু যদি আপনি একই হোস্ট একাধিক বার সাথে সংযোগ পরিকল্পনা করা হয়, আমি চাই নিশ্চয় বরং আমার কনফিগারেশন ফাইল একবার ব্যবহার তুলনায় আপডেট -J user@intermediateপ্রত্যেক সময় আমি সংযোগ করতে হবে।
চিপনার

10

কখনও কখনও আমরা কেবল পাইপলাইন ব্যবহার করতে পারি। সেই সময়টি আজ।

ssh -A user@host1 ssh user@host2 cat filename > filename

আপনি আপলোড করতে পারেন

ssh -A user@host1 ssh user@host2 cat \\\> filename < filename

হ্যাঁ আরও কিছু সমাধান রয়েছে যাতে প্রক্সি যুক্ত হয় তবে কীভাবে এটি করা যায় তা জেনে রাখা কার্যকর।


এর ব্যবহারিক ব্যবহার cat!
পিসকভোর

নোট করুন এটি মধ্যবর্তী হোস্টের যে কোনও পর্যাপ্ত অধিকারযুক্ত ব্যবহারকারীকে আপনার এসএসএল এজেন্ট এবং কীগুলিতে অ্যাক্সেস দেয়। আপনার হোস্ট এবং হোস্ট 2 এর মধ্যে প্রবাহিত ডেটা হোস্ট 1 এ এনক্রিপ্ট করা থাকবে না। প্রক্সি ব্যবহার করার পদ্ধতিগুলি এবং উপরে লাফানো এই দুটি সমস্যা এড়ানো।
জেমস

@ জামেস: আমি অজানা নই। এগুলির মতো বাশনের হোস্টগুলি সাধারণত খুব বিশ্বাসযোগ্য।
জোশুয়া

7

ProxyJumpকনফিগারেশন ব্যবহার করুন :


প্রক্সি জম্প এক বা একাধিক লাফ প্রক্সিকে [ইউজার @] হোস্ট [: পোর্ট] বা এসএসআইআরআই হিসাবে নির্দিষ্ট করে। একাধিক প্রক্সি কমা অক্ষর দ্বারা পৃথক করা যেতে পারে এবং ধারাবাহিকভাবে পরিদর্শন করা হবে। এই বিকল্পটি সেট করার ফলে প্রথমে নির্দিষ্ট প্রক্সি জ্যাম্প হোস্টের সাথে একটি ssh (1) সংযোগ তৈরি করে এবং সেখান থেকে চূড়ান্ত লক্ষ্যে একটি টিসিপি ফরোয়ার্ডিং স্থাপনের মাধ্যমে লক্ষ্য হোস্টের সাথে সংযুক্ত হওয়ার জন্য ssh (1) তৈরি হবে cause

scp -o ProxyJump=user@intermediate user@target:/path

2

জেডএমডেম নামে একটি প্রাচীন প্রোটোকল রয়েছে : আজকাল কয়েকটি প্রোগ্রাম এটিকে সমর্থন করে তবে এটি কার্যকর হলে এটি বেশ সুবিধাজনক হতে পারে।

আপনার ল্যাপটপের টার্মিনাল প্রোগ্রামটি জেডএমডিএম সমর্থন করে কিনা তা প্রথমে পরীক্ষা করুন। (উদাহরণস্বরূপ, আপনি জেডএমএমডিএম সমর্থন করতে iTerm2 (ম্যাকে) কনফিগার করতে পারেন An এখানে একটি উদাহরণ স্ক্রিপ্ট পাওয়া যায় ))

আপনার অফিস মেশিনে, চালান: sudo apt install lrzsz

এখন আপনাকে যা করতে হবে তা হ'ল আপনার অফিসের মেশিনে এসএসএস করে চালানো sz (filename)। ফাইলটি আপনার টার্মিনালের মাধ্যমে ডাউনলোড করা হবে।


1

ব্যবহারকারীর ssh এর অধীনে কনফিগারেশন: ~/.ssh/config

Host *
    UserKnownHostsFile=/dev/null
    StrictHostKeyChecking=no
    ServerAliveInterval 300
    ServerAliveCountMax 2
    ForwardAgent yes


Host jump server
    HostName server.company.org
    User root

Host jump1 server1
    HostName server1.dmz.company.org
    User root
    ProxyJump jump

Host jump2 server2
    HostName server.dmz2.company.org
    User root
    ProxyJump jump1

Host *.intranet.company.org
    User user
    ProxyJump jump2

আপনি সরাসরি 3 টি জাম্প সার্ভারের উপরে ইন্ট্রানেট সার্ভার থেকে অনুলিপি করতে পারেন ।

scp user@server.intranet.company:/home/user/ ./*

আমি স্কিপ সহ জাম্প সার্ভার নির্দিষ্ট করার প্রয়োজন নেই বলে আমি এটি উপস্থাপন করছি


0

এসসিপি -৩ এর মাধ্যমে:

scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt

2
-3বিকল্প বর্ণনা করা হয়েছে হিসাবে "দুই দূরবর্তী হোস্ট সিস্টেমের মধ্যে কপি স্থানীয় হোস্ট মাধ্যমে স্থানান্তরিত করা হয়।" যদিও আমি বিশ্বাস করি যে এই প্রশ্নটি স্থির করে যে স্থানীয় হোস্ট "রিমোট 2" অ্যাক্সেস করতে পারেনি।
জেফ স্ক্যালার হলেন

2
@ জেফশালার: আপনি মাঝখানে মেশিনে সংযুক্ত হন, তারপরে ব্যবহার করুন -3। তবে এটি ধরে নিয়েছে যে আপনি মাঝের মেশিন থেকে প্রথমটিতে ফিরে যেতে পারবেন।
জো

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