গতিশীলভাবে H / .ssh / কনফিগারেশনে এসএসএইচ হোস্ট এন্ট্রি জেনারেট করে


9

আমাকে ssh এর উপর একটি পুরো গাদা হোস্ট পরিচালনা করতে হবে। তবে আমি কেবলমাত্র একটি নির্দিষ্ট গেটওয়ে এসএস সার্ভারের মাধ্যমে এগুলি অ্যাক্সেস করতে পারি।

আমার মধ্যে নিম্নলিখিত রয়েছে ~/.ssh/config:

Host mygateway-www
Hostname www
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh mygateway nc %h 22

তবে আমাকে এই মেশিনগুলির সাথে প্রচুর সংযোগ করতে হবে। আমার কয়েক ডজন এন্ট্রি রাখার পরিবর্তে, ~/.ssh/configআমি কি এরকম কিছু পেতে পারি:

Host mygateway-*
Hostname ???WHAT GOES HERE????
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh mygateway nc %h 22

আমি আপনি ব্যবহার করতে পারেন জানেন %hমধ্যে Hostnameযুক্তি, কিন্তু যে হোস্ট-নেম হবে। আমার যা দরকার তা হ'ল বাশের মতো এক ধরণের স্ট্রিং প্রতিস্থাপন ${VAR%thingie}। এটা কি সম্ভব?

উত্তর:


24

এটি নিম্নলিখিত এসএসএইচ কনফিগারেশন ফাইলের সাহায্যে করা যেতে পারে:

Host *
  ServerAliveInterval 120

Host gateway.somewhere.com
  User jdoe

Host gateway+*
  User jdoe
  ProxyCommand ssh -T -a $(echo %h |cut -d+ -f1).somewhere.com nc $(echo %h |cut -d+ -f2) %p 2>/dev/null
  ControlMaster auto
  ControlPath ~/.ssh/ssh-control_%r@%h:%p

তারপরে আপনি আপনার অভ্যন্তরীণ হোস্টগুলিকে এর মতো অ্যাক্সেস করুন:

ssh gateway+internalhost01.somewhere.com
ssh gateway+internalhost02.somewhere.com

ডান অর্ধের জন্য আপনি যে নামটি চয়ন করেন তা লাফ হোস্টের দ্বারা সমাধানযোগ্য হবে।

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


6

আপনার হোস্টনাম ম্যানুয়ালি নির্দিষ্ট করার দরকার নেই কারণ এটি কমান্ড লাইন থেকে আসবে।

সহজভাবে চেষ্টা করুন:

Host *.domain  
  IdentityFile ~/.ssh/id_rsa  
  ProxyCommand ssh mygateway /usr/bin/nc %h 22

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

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

পূর্ববর্তী +1। প্রতিটি প্রকল্পের জন্য একটি সাবডোমেন তৈরি করুন। আপনার জীবনকে আরও সহজ করার জন্য ডিএনএস রয়েছে;)
ড্যান কারলি

1

দেখে মনে হচ্ছে এটি করার কোনও উপায় নেই।


1

আমারও একই সমস্যা ছিল এবং আমার কাছে সমস্ত বয়লারপ্লেট উত্পন্ন এমন একটি স্ক্রিপ্ট লেখা শেষ হয়েছিল। আমি আর ~ / ssh / config পরিবর্তন করি না, আমি ~ / ssh / config.in পরিবর্তন করি এবং আমার স্ক্রিপ্টটি পুনরায় চালু করি।


1
আপনার স্ক্রিপ্ট শেয়ার করতে যত্নশীল? আমি এটি করার কথা ভেবেছি, তবে মনে হচ্ছে একটি দৃust় এবং জেনেরিক সমাধান সঠিক হতে অনেক বেশি কাজ নিতে পারে। এমনকি যদি আপনার সমাধানটি এখনও এটি না হয় তবে আপনি কী সঠিক বলে মনে করছেন এবং আপনি যদি এটির কাজটি করতে চান তবে আলাদাভাবে কী করবেন তা জেনে রাখা কার্যকর হবে।
আইকনোক্লাস্ট

আমার ধারণা ছিল .ssh/config.dপ্রতিটি টেম্পলেটটির জন্য একটি ফাইল থাকবে , যেখানে প্রতিটি টেমপ্লেট ফাইনালে একটি বা একাধিক এন্ট্রি তৈরি করবে ~/.ssh/config। সর্বজনীন ভেরিয়েবল সহ একটি ফাইলও থাকবে তবে প্রতিটি টেমপ্লেটের নিজস্ব ভেরিয়েবল থাকতে পারে যা শীর্ষে তালিকাভুক্ত গ্লোবালগুলির চেয়ে অগ্রাধিকার গ্রহণ করবে। ~/.ssh/configফাইল ব্যাপার-যতদিন না পর্যন্ত আপনি এটি সরাসরি আপনার সম্পাদনাগুলি সংরক্ষণ করতে চেয়েছিলেন তৈরি না যেমন চাহিদা বা একটি উত্পন্ন করা যেতে পারে সময়তালিকা এটা হবে না।
আইকনোক্লাস্ট

আমার স্ক্রিপ্টটি সম্পূর্ণ অনির্ধারিত এবং আমার মনে হয় না যে এটি ডকুমেন্টেশন বা উদাহরণ ছাড়াই বোধগম্য হবে যা আমার তৈরি করার সময় নেই।
মাইকেল হফম্যান

বোধগম্য। আমার বর্ণিত পদ্ধতির বিষয়ে কোনও প্রতিক্রিয়া প্রশংসা করা হবে, বিশেষত যদি আমি কিছু গুরুত্বপূর্ণ প্রয়োজন বা ব্যবহারের ক্ষেত্রে নজর রাখছি না, তবে কিছু বড় (বা ছোট) প্রতিবন্ধকতা রয়েছে।
আইকনোক্লাস্ট 2'15

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

1

হোস্ট-নেমটি সরাসরি Hostnameঘোষণার মাধ্যমে ওভাররাইডিং নির্দিষ্ট করে উপেক্ষা করুন এবং পরিবর্তে রানটাইমে এটি নির্ধারণ করুন। কমান্ডে রেফারেন্স ProxyCommandব্যবহার করে এটির অংশ হিসাবে মূল্যায়ন করে এটি করুন %h( %pহার্ডকোডিং পোর্টের পরিবর্তে 22 হিসাবেও ব্যবহার করুন) অর্থাৎ

Host mygateway-*
   #Hostname ???WHAT GOES HERE????
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh mygateway nc $(echo %h|sed 's/^mygateway-//') %p

কারও কাছে আরও জেনেরিক স্তন থাকতে পারে, যার মাধ্যমে আপনি কোনও হোস্টকে -কেবলমাত্র যেমনটি হিসাবে বিবেচনা করা যায় না বা অন্য কোনও মিলের স্তরের (গুলি) হিসাবে -নির্দিষ্ট করতে পারেন তবে কোনও নির্দিষ্ট করার জন্য জেনেরিক পদ্ধতি থাকতে পারে <gateway>-<target>:

Host *-*
   # Assume LHS of "-" is GW and RHS of "-" is target host
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh $(echo %h|cut -d - -f1) nc $(echo %h|cut -d - -f2-) %p

অতিরিক্তভাবে, এসএসএইচ ক্লায়েন্টের নতুন সংস্করণগুলি [-W host:port]সরাসরি nc(নেটক্যাট) হিসাবে একই ফাংশনটি সম্পাদন করার বিকল্পটিকে সমর্থন করে । এর মতো, আমরা পরিবর্তিত ব্যবহার করতে পারি:

Host *-*
   # Assume LHS of "-" is GW and RHS of "-" is target host
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh -W $(echo %h|cut -d - -f2-):%p $(echo %h|cut -d - -f1)

অবশ্যই, আপনার কাছে হোস্টের সীমাবদ্ধ তালিকা থাকলে আপনি সর্বদা এটি করতে পারেন:

Host host1 host2 host3 hostN
   IdentityFile ~/.ssh/id_rsa
   ProxyCommand ssh mygateway nc %h %p

আশাকরি এটা সাহায্য করবে!


0

আমার একই সেটআপ সহ একটি ক্লায়েন্ট ছিল এবং আমি আমার সমস্যা সমাধানের জন্য ডিএসএসএইচ ব্যবহার করি।
অন্যান্য জিনিসগুলির মধ্যে ডিএসএসএইচ আপনাকে গেটওয়ে হোস্টের মাধ্যমে স্বচ্ছভাবে দূরবর্তী হোস্টগুলিতে লগইন করতে দেয়।

ব্যবহারের ক্ষেত্রে

  • সিসকো রাউটারগুলি থেকে কনফিগারেশন প্যারামিটার সংগ্রহ করুন যার জন্য "এনএএন" লগইন প্রয়োজন require
  • সার্ভারগুলিতে লগ ইন করুন, যেগুলি প্রমিটরটলগিন সরাসরি হিসাবে নিষ্ক্রিয় হয়েছে (প্রযোজ্য অবস্থা - এবং স্বয়ংক্রিয়ভাবে পাসওয়ার্ড লিখে)
  • উন্নত লগিংয়ের মতো কাস্টম যুক্তি যুক্ত করুন
  • সার্ভার লক্ষ্য করতে বেশ কয়েকটি সংযোগ মাধ্যমে টানেল

5
আমি rand / .ssh / কনফিগারেশনে যা করতে পারি তার জন্য জাভা ব্যবহার করা কিছু র্যান্ডম তৃতীয় পক্ষের এসএসএস ক্লায়েন্ট ব্যবহার শুরু করব না।
ররি

লিঙ্কটি মারা গেছে
আইকনোক্লাস্ট 2'15

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