আমি কীভাবে একটি কমান্ডে বি এর মাধ্যমে মেশিন এএসএস করতে পারি?


103

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

আমি এখন যা করি তা এখানে:

  1. একটি ভিন্ন বিশ্ববিদ্যালয়ের মেশিনে লগ ইন করুন, মেশিন বি বলুন

    (এই মেশিন বি আমার হোম কম্পিউটার থেকে এসএসএইচের মাধ্যমে অ্যাক্সেসযোগ্য))

  2. এ এর সাথে সংযোগ করতে বি তে এসএসএইচ ব্যবহার করুন

দ্রুত করার কোনও উপায় আছে? কেবল একটি ssh কমান্ড ব্যবহার করা হচ্ছে।


উত্তর:


97

হ্যাঁ, ProxyCommandআপনার এসএসএইচ কনফিগারেশনে ব্যবহার করছেন ।

আপনার বাড়ির ডিরেক্টরিতে একটি এসএসএইচ কনফিগারেশন ফাইল তৈরি করুন (আপনি যদি না এই সিস্টেম-প্রশস্ত করতে চান) ~/.ssh/config,:

Host unibroker          # Machine B definition (the broker)
Hostname 12.34.45.56    # Change this IP address to the address of the broker
User myusername         # Change this default user accordingly 
                        # (`user@unibroker` can overwrite it)

Host internalmachine    # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22

এখন আপনি সরাসরি ব্যবহার করে মেশিন এ পৌঁছাতে পারেন

ssh user@internalmachine

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

  • ফাইলগুলি অনুলিপি করতে এসসিপি

    scp somefile user@internalmachine:~/
    
  • আপনার জিইউআই অ্যাপ্লিকেশনগুলিতে:

    sftp://user@internalmachine/মেশিনে ব্রাউজ করতে অবস্থান হিসাবে ব্যবহার করুন।

    কে-ডি-ভিত্তিক (ডলফিন): ব্যবহার fish://user@internalmachine/

নোট

পরিবর্তন hostname.or.IP.address.internal.machineএবং পোর্ট ( 22) মেশিন আপনার কাছে পৌঁছাতে চায় তা যেন আপনার কাছ থেকে would unibrokerমেশিন।

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

ব্যাখ্যা

ProxyCommandএবং 'নেটক্যাট' ব্যবহারের এই পদ্ধতির এটি করার একমাত্র উপায়। আমি এটি পছন্দ করি কারণ আমার এসএসএইচ ক্লায়েন্ট সরাসরি টার্গেট মেশিনে কথা বলে যাতে আমি আমার ক্লায়েন্টের কাছ থেকে হোস্ট কীটি যাচাই করতে পারি এবং ব্রোকারে অন্য কী ব্যবহার না করেই আমি আমার সর্বজনীন কী প্রমাণীকরণ ব্যবহার করতে পারি।

প্রতিটি Hostনতুন হোস্ট বিভাগের সূচনা সংজ্ঞায়িত করে। Hostnameহোস্টের লক্ষ্য হোস্টনাম বা আইপি ঠিকানা। Userআপনি ব্যবহারকারী অংশ হিসাবে প্রদান করবে কি ssh user@hostname

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

ব্রোকারে নেটকাটনেটক্যাট-ওপেনবিএসডি ইনস্টল করুন ইনস্টল করা আছে তা নিশ্চিত করুন (সাধারণত উবুন্টুতে ডিফল্টরূপে উপলব্ধ) - নেটক্যাট-ওপেনবিএসডি বা নেটক্যাট -ট্র্যাডিশনালনেটকাট-সনাতন ইনস্টল করুন

মনে রাখবেন আপনি এখানে দুটি বার এনক্রিপশন সহ এখনও এসএসএইচ ব্যবহার করছেন। নেটক্যাট চ্যানেলটি সরলপাঠ্য অবস্থায়, আপনার পিসিতে থাকা আপনার এসএসএইচ ক্লায়েন্টটি চূড়ান্ত লক্ষ্য মেশিনের সাহায্যে অন্য একটি এনক্রিপ্ট করা চ্যানেল সেট আপ করবে।


4
আমি -Q0 বিকল্পটি সরিয়ে ফেলতে হয়েছিল কারণ এটি যে মেশিনটি আমি ব্যবহার করেছিলাম তা সমর্থন করে না। তা ছাড়া, এটি সব কাজ করে। এটি একটি অভিনব টিপস। তোমাকে অনেক ধন্যবাদ. :)
গেরি

আমি একটি সমস্যায় পড়েছি, আপনার উত্তরটি টার্মিনাল থেকে আমার পক্ষে ঠিক কাজ করে, তবে আমি গুই এসএফপি ব্যবহার করে এটি করতে পারছি না, এতে বলা হয়েছে: লগ ইন করার সময় হাতছাড়া হওয়া ত্রুটি বার্তা, টাইম আউট হয়েছে
বিকাশ বি

@ ভিকাশবি ঠিক আছে, এটি সত্যই কাজ করা উচিত। আপনার নির্দিষ্ট পরিস্থিতি পরিচালনা করতে একটি নতুন প্রশ্ন তৈরি করার কথা বিবেচনা করুন।
জার্মটভিডিজক

আমি এখানে প্রশ্নটি করেছি: Askubuntu.com/questions/688567/…
বিকাশ বি

1
@Gertvdijk এর বুদ্ধিমান শব্দের পরিপূরক করতে, ssh প্রক্সি এবং জাম্প হোস্টগুলির বিষয়টিতে একটি দুর্দান্ত উইকিবুক রয়েছে যা একটি অমূল্য রেফারেন্স হিসাবে পরিবেশন করতে পারে।
ট্র্যাভিস ক্লার্ক

51

এক বার যেতে হবে

আমি আমার অন্যান্য উত্তরে প্রদত্ত প্রক্সিকম্যান্ড পদ্ধতির একটি সুস্পষ্ট বিকল্প হ'ল 'হ্যাপিং ' লক্ষ্য টার্গেট মেশিনে সরাসরি থাকবে:

ssh -t user@machineB ssh user@machineA

-tপ্রথম sshকমান্ডে নোট করুন । এটি ছাড়া এটি ব্যর্থ হবে:

Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
[...]

এটি একটি আসল টিটিওয়াইকে বরাদ্দ করতে বাধ্য করবে

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

পূর্বোক্ত সকল কারণে আমি প্রক্সিকম্যান্ড পদ্ধতির দৃ strongly়তার সাথে সুপারিশ করছি তবে দ্রুত সংযোগের জন্য এটি ঠিকঠাক কাজ করে।


'ওয়ান অফ' এবং স্থায়ী সমাধান উভয়ের সাথে কেন একটি উত্তর নেই?
অচপল

5
@ ডেমিউর এটি স্ট্যাক এক্সচেঞ্জ সাইটগুলি কীভাবে কাজ করে ... দেখুন: একটি প্রশ্নের দু'বার উত্তর দেওয়ার সরকারী শিষ্টাচার কী? বলে যে "একটি উত্তরে রাখার চেয়ে দুটি আলাদা উত্তর পোস্ট করা ভাল।" । এবং আমি এটিকে একই সমাধান হিসাবে বিবেচনা করি না। স্থায়ী / অস্থায়ীভাবে এমন নয় যা আমার মতে এই পদ্ধতিকে আলাদা করে তোলে।
gertvdijk

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

@gertvdijk সুপার নিনজা এখানে! আপনার কাছে শীর্ষ দু'টি সমাধান রয়েছে। আমি এর আগে কখনও দেখিনি। সুপার শীতল এন সলিউশনগুলির সাথে একটি মেগা দীর্ঘ সমাধান তৈরি করার চেয়ে ভাল উপায় (যা আমি সাধারণত দেখি)।
ট্রেভর বয়ড স্মিথ

এটি একটি কনফিগার সেটআপ করার চেয়ে অনেক বেশি সুবিধাজনক যা অন্যান্য এসএসকেও বাধা দেয়।
নিখিল সাহু

37

আপনি -Jকমান্ড লাইন বিকল্পটি ব্যবহার করতে পারেন :

ssh -J user@machineB user@machineA

থেকে man ssh:

-J [user@]host[:port]
     Connect to the target host by first making a ssh connection to
     the jump host and then establishing a TCP forwarding to the
     ultimate destination from there.  Multiple jump hops may be
     specified separated by comma characters.  This is a shortcut to
     specify a ProxyJump configuration directive.

এটি ওপেনএসএসএইচ সংস্করণ 7.3 এ প্রবর্তিত হয়েছিল (আগস্ট 2016 এ প্রকাশিত)। এটি উবুন্টু 16.10 এবং তার পরে পাওয়া যাবে।


3
+1 কারণ এটি আপনার মেশিনএ
শোক

1
+1, যদি আপনার সমস্ত হোস্ট সাম্প্রতিক পর্যায়ে একটি ওপেনএসএইচ সংস্করণ চালাচ্ছে তবে আমার প্রক্সিকম্যান্ড উত্তরের তুলনায় এটি আরও ভাল সংস্করণ।
জার্মটভিডিজক

এক্ষেত্রে ওপেনএসএইচ সার্ভারটি এ এবং বি উভয় মেশিনেই ইনস্টল করা উচিত? আমি কি ঠিক বুঝেছি?
মিখাইল

17

ব্যবহার করার চেষ্টা করুন

Host <visible hostname alias>
        Controlmaster auto
        User <user>
        hostname <visible hostname>
        port <port>
        IdentityFile ~/.ssh/<id file>

Host <private LAN hostname alias>
     ProxyCommand ssh -q -W <private LAN hostname>:<private LAN port> <visible hostname alias>

আপনার ~ / .ssh / কনফিগারেশনে এবং আপনার কম্পিউটারে থাকা কীগুলির সাহায্যে এটি সমস্ত কিছু এক শটে করুন।


1
এটি মিশ্রণে নেটক্যাট প্রবর্তনের চেয়ে আরও পরিষ্কার। এছাড়াও, ব্যক্তিগত এসএসএইচ কীটি Bমেশিনে থাকা দরকার নেই ।
danemacmillan

1

এটি একটি খুব সহায়ক পরামর্শ। ঘন্টাখানেক ঘোরাঘুরি করার পরে, আমি এই নোটটি পেয়েছি এবং এটি ডকুমেন্ট হিসাবে ঠিক কাজ করেছে বলে নিশ্চিত করেছে। রিমোট মেশিনসি থেকে মেশিনএ মাধ্যমে মেশিনবি'র সাথে সংযোগ স্থাপন করতে:

উদাহরণস্বরূপ: [xuser @ machineC ~] ssh -t MachAA এসএস মেশিনবি

"-T" সমালোচনামূলক, এসএস উপস্থিত না থাকলে ব্যর্থ হয়। আপনাকে দু'বার অনুরোধ জানানো হবে, প্রথমে মেশিনএ-তে পাসওয়ার্ডের জন্য, এবং দ্বিতীয়বার মেশিনবি-র জন্য for এছাড়াও, নোট করুন যে এটি ধরে নিয়েছে যে আপনি তিনটি মেশিনেই আপনার "xuser" ব্যবহারকারীর সংজ্ঞা দিয়েছেন। যদি তা না হয় তবে কেবল ssh সিনট্যাক্সটি ব্যবহার করুন: "ইউসার @ মেশিনএ ..."। এছাড়াও খেয়াল করুন যে আপনি চাইলে ডটেড কোয়াড কাঁচা আইপি # গুলি ব্যবহার করতে পারেন। আপনি যদি কোনও প্রাইভেট লোকাল নেট থেকে যুক্ত হন যা আইপি ব্যবহার করে বিশ্বের কাছে প্রকাশিত হয় না - এটি কার্যকর। আপনার স্থানীয় হোস্ট ফাইল বা কোনও ডিএনএসে নেই। মেশিনবি থেকে, রিমোট মেশিনসি-তে কোনও ফাইল পেতে, আপনি মেশিনবি থেকে মেশিনএ, তারপরে মেশিনএ থেকে দূরবর্তী মেশিনে যেতে পারেন। (উদাহরণস্বরূপ, রিমোট মেশিনসি মেশিনএকে পিন করতে পারে, তবে মেশিনবি নয়)) ক্যাভ্যাট: আমি ফেডোরা এবং উইন্ডোজএক্সপি দিয়ে পরীক্ষা করেছি, মেশিনিয়া একটি এক্সপি-বক্স চলমান আইসিএস (ইন্টারনেট সংযোগ ভাগ করে নেওয়া), মেশিনবি এবং রিমোট মেশিনসি হ'ল ফেডোরা-লিনাক্স বাক্স। এই পরামর্শটি আমার জন্য একটি মূল সমস্যা সমাধান করেছে - যেমন। আমার রিমোট সাইট ল্যানে সীমাবদ্ধ, পর্যবেক্ষণ করা দূরবর্তী অ্যাক্সেস। এছাড়াও নোট করুন, আপনি যখন মেশিনবি থেকে "লগআউট" করবেন তখন আপনার দুটি "এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স সংযোগ বন্ধ থাকা উচিত"। বার্তা।


যদি আপনি সর্বজনীন কী প্রমাণীকরণ সেট আপ এবং কনফিগার করেন তবে আপনার পাসওয়ার্ডগুলি প্রবেশ করার বিষয়ে আপনাকে চিন্তা করার দরকার নেই। কিন্তু -tএখনও প্রয়োজন।
ফিলিপ আলভারেজ

@ ফিলিপআলভারেজ আপনি এখনও পাসওয়ার্ডহীন লগইন করতে মেশিন বি-তে বিশ্বাস না রাখলে দ্বিতীয় পাসওয়ার্ড প্রবেশের বিষয়ে চিন্তা করতে হবে!
মাইকেল 21

1

আপনি উভয় সিস্টেমে শেল অ্যাক্সেসের অনুমতি দিলে প্রক্সিকমন্ড হ'ল কেসের একটি পরিষ্কার সমাধান। আমরা দালাল (বি) এর মাধ্যমে দূরবর্তী ব্যবহারকারীদের একটি অভ্যন্তরীণ মেশিনে (এ) অ্যাক্সেস দিতে চেয়েছিলাম, তবে উন্নত সুরক্ষার জন্য ব্যবহারকারীকে বিতে শেল অ্যাক্সেস না দিয়ে। এটি কাজ করেছে:

লগইন শেলটি প্রতিস্থাপন করুন

ব্রোকারের জন্য নিম্নলিখিত স্ক্রিপ্ট (কোনও ফাইলের মধ্যে সঞ্চিত chsh) দিয়ে লগইন শেল (ব্যবহার ) প্রতিস্থাপন করুন extuser:

#!/bin/sh   # this is essential to avoid Exec format error
ssh internaluser@A

প্রদত্ত কোনও দূরবর্তী ব্যবহারকারীর জন্য এক্সট্রুজার @ বিতে এবং এক্সট্রুজার @ বি এর জন্য অভ্যন্তরীণ ব্যবহারকারীর @ এ তে কোনও পাসওয়ার্ড লগইন সেটআপ করা হয়নি, তবে নিম্নলিখিত কমান্ডটি কার্যকর করলে দূরবর্তী ব্যবহারকারীকে সরাসরি এ-তে নেওয়া হবে

ssh extuser@B

টিপ : কাস্টম লগইন শেলটিতে পরিবর্তন করার আগে এক্সট্রুজার @ বি তে কোনও পাসওয়ার্ড লগইন অনুমোদিত_কিগুলি সেটআপ করা প্রয়োজনীয় নয়। পরিবর্তনের পরে, যেহেতু এই অ্যাকাউন্টটি শেলের মাধ্যমে কারও কাছে অ্যাক্সেসযোগ্য নয়, কেবলমাত্র একটি sudoer @ বি ফাইল সম্পাদনা করে ਅਧਿਕਾਰিত_কিগুলিতে পরিবর্তন করতে পারে।

sudo vi ~extuser/.ssh/authorized_keys
sudo touch ~extuser/.hushlogin

শেষ লাইনটি বি থেকে লগইন ব্যানার প্রদর্শনকে দমন করা, যাতে দূরবর্তী ব্যবহারকারীর এ এ স্বচ্ছ প্রবেশাধিকার রয়েছে user


খুব আকর্ষণীয় পদ্ধতির। যাইহোক, এর মূল ডাউনসাইডগুলি হ'ল : 1) ব্যবহার স্ট্যান্ডার্ড এসএসএইচ ব্যবহারের মধ্যে সীমাবদ্ধ (কোনও এসএফটিপি / এসসিপি সমর্থন নয়)। ২) একজন ব্যবহারকারী একক ব্যতীত অন্য কোনও লক্ষ্য হোস্ট নির্বাচন করতে পারে না (কারণ লগইন শেলটিতে হার্ডকডযুক্ত) 3) হোস্ট কী বৈধকরণটি ওয়ার্কস্টেশন থেকে চূড়ান্ত লক্ষ্য হোস্ট পর্যন্ত করা যায় না (ব্রোকার এসএসএইচ বাইনারি ব্যবহার করার পরে) । ৪) চূড়ান্ত লক্ষ্য হোস্ট অ্যাক্সেস করার জন্য ব্যবহারকারীদের ব্যক্তিগত কীগুলি ব্যবহারকারীর চেয়ে বরং ব্রোকারের মধ্যে থাকে। এটি প্রশাসকের দ্বারা ব্যবহারকারীর ছদ্মবেশ তৈরি করার অনুমতি দেয় (যা সাধারণত সম্ভব নয়)।
gertvdijk

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

1

আপনি বলতে চাইছেন আপনার বেশ কয়েকটি জাম্পার দরকার :)

সম্প্রতি, আমি আমার সমস্যা হিসাবে জাম্পার 1 জাম্পার 2 এবং আমার চূড়ান্ত মেশিনের সাথে এই সমস্যার মুখোমুখি হয়েছি

স্থানীয় লিপি:

#!/bin/bash
sshpass -p jumper1Passwd ssh -t jumper1@jumper1IP ./Y00.sh

তারপরে 1 ম জাম্পারে (যা আমার রাউটার), আমি ওয়াই 100.শ নামে একটি স্ক্রিপ্ট রেখেছি:

ssh -tt jumper2@jumper2 -i ~/.ssh/id_rsa sshpass -p finalPassWord ssh -tt final@final

আপনার আইপি এবং পাসওয়ার্ডগুলি দিয়ে এগুলি প্রতিস্থাপন করতে পারেন, শুভকামনা!

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