ssh মাল্টি-হপ ... কনফিগারেশন ফাইলকে কনফিগার করতে হবে


10

আমি আমার মাল্টি-হপ ssh কমান্ডটি ssh .ssh / config ফাইলে রাখার চেষ্টা করছি।

এটি আমার সংযোগ গ্রাফ: ল্যাপটপ (আমি এখানে আছি) ------> ব্যবহারকারী -------> ওয়ার্কস্টেশন

আমি ssh পাবলিক আরএসএ কীগুলিকে 'ইউজারভার' এবং 'ওয়ার্কস্টেশন'-এ রেখেছি। এই মুহুর্তে আমি এই লাইনটি টাইপ করে সংযোগ করতে পারি:

ssh -A -t userserver@userver ssh -A userworkstation@workstation

তবে আমি চাই, একই প্রভাবতে পৌঁছানোর জন্য ~ / .ssh / কনফিগারেশনে কনফিগার ফাইলের সক্ষমতা ব্যবহার করতে সক্ষম হতে কিন্তু একটি সাধারণ কমান্ড ব্যবহার করা, যা আমাকে 'scp' দিয়ে দ্রুত অনুলিপি করার অনুমতি দেয়। একমাত্র সমস্যাটি হ'ল 'ব্যবহারকারী' এর কাছে "এনসি" কমান্ড নেই এবং আমার সেখানে সুপারভাইজার নেই, কেবল আমার বাড়ির ফোল্ডারটি নিয়ন্ত্রণ করুন। তবুও, আমি কিছু জিনিস চেষ্টা করেছিলাম:

আমার ল্যাপটপে এই কনফিগার ফাইলটি রয়েছে (~ / .ssh / config):

# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user

এছাড়াও ব্যবহারকারী হিসাবে অন্য কনফিগারেশন ফাইল (~ / .ssh / config)

# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username

এই কনফিগার ফাইলগুলির সাথে আমি সংযোগ করতে পারি

ssh -A -t userver ssh -A workstation

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

Host hop
ProxyCommand ssh -A -t userver ssh -A workstation

তারপরে, যখন আমি করি

ssh hop

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

Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found

কোন ধারনা?

উত্তর:


6

আপনার যে আদেশের প্রয়োজন রয়েছে তা হ'ল ProxyCommand

আপনার .ssh / কনফিগারেশন ফাইলগুলিতে এই লাইনগুলি রাখা উচিত:

  Host userver
  HostName userver.example.com
  .........    

  Host workstation 
  ProxyCommand ssh -q userver nc -q0 workstation 22

এখন আপনি পিসি ওয়ার্কস্টেশন মাধ্যমে সংযোগ করতে পারেন

  ssh worksation

যদি এটি পরিষ্কার না হয়, বা আপনি আরও বিশদ চান, আমি আপনাকে পরামর্শ দিচ্ছি যে এসএসএস মাল্টি-হপিংয়ের জন্য এই দুর্দান্ত ভূমিকাটি পড়ুন ।

সম্পাদনা:

আপনি সর্বদা একটি উপনাম সংজ্ঞায়িত করতে পারেন: আপনার / home/your_name/.bashrc ফাইলে, এই লাইনটি যুক্ত করুন:

  alias ssh_workstation='ssh -A -t userver ssh -A -X workstation' 

(আমি -Xবিকল্পটি সন্নিবেশ করিয়েছি যাতে আপনি দূরবর্তী সার্ভারে গ্রাফিকাল অ্যাপ্লিকেশনগুলি চালাতে পারেন, স্থানীয়ভাবে সেগুলি দেখুন; আপনি যদি এটি না চান তবে কেবল ড্রপ করুন -X)।


হাই মরিয়াসম্যাটুটিয়, আমি আপনার সমাধানটি চেষ্টা করেছি তবে আমি যেমন মূল পোস্টে বলেছি 'ব্যবহারকারীর' নোডে প্রোগ্রামের নেটক্যাট (এনসি) নেই। সুতরাং আমি এই ত্রুটিটি পেয়েছি: ssh ওয়ার্কস্টেশন ব্যাশ: এনসি: কমান্ডটি খুঁজে পেল না ssh_exchange_ شناخت: দূরবর্তী হোস্ট দ্বারা সংযোগ বন্ধ
Labotsirc

আপনি এটি ইনস্টল করতে পারবেন না?
মারিয়াসমাতুটিয়া

দুর্ভাগ্যক্রমে না, আমার 'ইউজারভার' তে সুপারভাইজার নেই, এ কারণেই আমি একটি বিকল্প পদ্ধতি চেষ্টা করছিলাম। আমি এটি পাচ্ছি না, যদি এটি "ssh -A -t ব্যবহারকারীর ssh -A ওয়ার্কস্টেশন" কাজ করে তবে প্রক্সিকমন্ডে কেন একই জিনিস রাখে না?
ল্যাবোটরসিক

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

আমার নেটকাট বাইনারি অনুলিপি করেছেন, -q0 বিকল্পটি সরাল কারণ এটি ত্রুটি দিচ্ছিল, এবং এখন এটি কার্যকর! ধন্যবাদ
ল্যাবোটসার্ক

10

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

আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন ~/.ssh/config:

Host *
  ServerAliveCountMax 4
  ServerAliveInterval 15

Host workstation
  Hostname workstation
  User userworkstation
  ProxyCommand ssh userserver@userver -W %h:%p

তারপরে আপনি এটির মতো এসএসএস করতে পারেন:

ssh workstation

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

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