Ssh কনফিগারেশনে একাধিক অনুরূপ এন্ট্রি


193

বলুন আমি sshআমার .ssh configফাইলে একই সেটআপ সহ 30 টি সার্ভারের জন্য আমার বিকল্পগুলি কনফিগার করতে চাই :

host XXX
     HostName XXX.YYY.com
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

যেখানে এই 30 টি মেশিনের মধ্যে একমাত্র জিনিসটি পরিবর্তিত হয় XXX

উপরের কাঠামোটি আমার configফাইলে 30 বার পুনরাবৃত্তি করার পরিবর্তে , মেশিনের একটি পরিসর সংজ্ঞায়নের জন্য অন্য উপায় আছে কি?

উত্তর:


232

থেকে ssh_config(5)মানুষ পৃষ্ঠা:

 Host    Restricts the following declarations (up to the next Host key‐
         word) to be only for those hosts that match one of the patterns
         given after the keyword.  If more than one pattern is provided,
         they should be separated by whitespace.

...

 HostName
         Specifies the real host name to log into.  This can be used to
         specify nicknames or abbreviations for hosts.  If the hostname
         contains the character sequence ‘%h’, then this will be replaced
         with the host name specified on the commandline (this is useful
         for manipulating unqualified names).

তাই:

Host XXX1 XXX2 XXX3
  HostName %h.YYY.com

9
ওপেনএসএসএইচ 5.6 রিলিজে%h বৈশিষ্ট্যটি উপস্থিত হয়েছে বলে মনে হয় । আমি ভাবছিলাম যে কেন আমি এটি আগে দেখিনি - দেবিয়ান স্কুইজের সংস্করণটি 5.5।
jw013

2
আপনি যদি কোনও পুরানো ওএসে থাকেন বা এমন কোনও নিয়ম প্রয়োজন যা সমর্থিত নয় config, আপনি সর্বদা একটি সাধারণ স্ক্রিপ্ট লিখতে পারেন যা আপনার উত্পন্ন করে config
রজার ডাহল

69

সেটআপটি ছোট করার জন্য আপনার .ssh/configমতো একটি থাকতে পারে

Host X01
    HostName X01.YYY.com

Host X02
    HostName X02.YYY.com

...

Host X01 X02 ...
     User my_username
     Compression yes
     Ciphers arcfour,blowfish-cbc
     Protocol 2
     ControlMaster auto
     ControlPath ~/.ssh/%r@%h:%p
     IdentityFile ~/.ssh/YYY/id_rsa

Host X01 X02 ...Host *প্রতিটি হোস্টের নিম্নলিখিত কনফিগারেশন থাকলে প্রতিস্থাপন করা যেতে পারে


2
এটিই কেবলমাত্র উত্তর বলে মনে হচ্ছে যা আসলে ওপিকে (এবং আমার) সহায়তা করে।
ম্যাড পদার্থবিদ

অগ্রাধিকার আদেশ কি? এটি কি কেবল ফাইলের পরে সংজ্ঞায়িত স্টাফগুলিকে ফাইলে পূর্বে সংজ্ঞায়িত করা হবে? যেমন বলুন যে "হোস্ট এক্স01" এর অধীনে আমার "কমপ্রেশন নং" ছিল, তখন কি "হোস্ট এক্স01 এক্স02" এর অধীনে "সংক্ষেপণ হ্যাঁ" দ্বারা ওভাররাইড করা হবে?
বেন ফার্মার

1
Ssh_config ম্যানুয়াল থেকে: যেহেতু প্রতিটি প্যারামিটারের জন্য প্রথম প্রাপ্ত মান ব্যবহার করা হয়, তাই ফাইলের শুরুতে আরও হোস্ট-নির্দিষ্ট ঘোষণাগুলি দেওয়া উচিত এবং শেষে সাধারণ ডিফল্ট দেওয়া উচিত।
গিলিয়াম ভিনসেন্ট

পারি Host X01 X02 ...দ্বারা প্রতিস্থাপন করা *.YYY.com? এটি যদি কাজ করে তবে খানিকটা পরিচালনাযোগ্য বলে মনে হচ্ছে।
মাইকেল

51

সহজভাবে ব্যবহার করুন *

দেখুন man ssh_config:

প্যাটার্নস একটি প্যাটার্নে শূন্য বা আরও বেশি শ্বেতস্থান অক্ষর, '*' (একটি ওয়াইল্ডকার্ড যা শূন্য বা আরও বেশি অক্ষরের সাথে মেলে), বা '?' (একটি ওয়াইল্ডকার্ড যা ঠিক একটি চরিত্রের সাথে মেলে)। উদাহরণস্বরূপ, ".co.uk" ডোমেইনের সেটটিতে যে কোনও হোস্টের জন্য ঘোষণার একটি সেট নির্দিষ্ট করতে, নিম্নলিখিত প্যাটার্নটি ব্যবহার করা যেতে পারে:

       Host *.co.uk

 The following pattern would match any host in the 192.168.0.[0-9] network range:

       Host 192.168.0.?

 A pattern-list is a comma-separated list of patterns.  Patterns within pattern-lists may be negated by preceding them with an
 exclamation mark (‘!’).  For example, to allow a key to be used from anywhere within an organisation except from the “dialup”
 pool, the following entry (in authorized_keys) could be used:

       from="!*.dialup.example.com,*.example.com"

ধন্যবাদ! এটি আমার যা প্রয়োজন তা মনে হচ্ছে তবে এটি কীভাবে আমার ক্ষেত্রে মানিয়ে নেবে তা আমি এখনও বুঝতে পারি না। আমি ?যেখানেই চাই না সেখানে প্রশ্ন চিহ্ন ব্যবহার করে *চিহ্নের সাথে মেলে এমন প্যাটার্নটি প্রতিস্থাপন করা হোক ?
আমেলিও ওয়াজকেজ-রেইনা

2
হুম। আমি মনে করি নিদর্শনগুলি আমার যা প্রয়োজন তা থেকে একটি আলাদা উদ্দেশ্য পরিবেশন করে। তারা একই configপ্রবেশে একাধিক ক্যোয়ারী পুনঃনির্দেশিত করে তবে হোস্টের পরামিতিগুলি স্থির হয় (অর্থাত প্যারামিটারগুলিকে টেমপ্লেট করতে প্যাটার্ন ব্যবহার করা যায় না )। আমি কি ভূল?
আমেলিও ওয়াজকেজ-রেইনা

4
@ user27915816 হ্যাঁ, আপনি ঠিক বলেছেন, যতদূর আমি জানি "টেম্পলেট" করার কোনও উপায় নেই। আপনি যা করতে পারেন তা হ'ল একক Host *প্রবেশে ধ্রুবক রেখাগুলি পৃথক করে দেওয়া এবং প্রতিটিটির জন্য পৃথক পৃথক প্রবেশ রয়েছে Host XXXযা কেবলমাত্র পৃথক অংশগুলির (যেমন Hostname XXX.YYY.ZZZলাইন) নিয়ে থাকে।
jw013

এই পৃষ্ঠায় শীর্ষ ফলাফল (এখনের জন্য) গুগলিংয়ের সময় "এসএসএস কনফিগারেশন ওয়াইল্ডকার্ডস", সুতরাং সেই প্রশ্নের উত্তর দেওয়ার জন্য ধন্যবাদ।
ਵਿਸ਼ਾਲতঃ সুপরিবর্তন

9

Ignacio Vazquez-Abram এবং H.-Dirk Schmitt এর উত্তর থেকে, কেউ .ssh / কনফিগারেশনে নিম্নলিখিতগুলি যুক্ত করতে পারেন

HOST XXX*
    HostName %h.YYY.com
    User myname

এবং তারপরে, উদাহরণস্বরূপ, আপনি দ্বারা myname@XXX2.YYY.com হিসাবে লগইন করতে পারেন

ssh XXX2

যেহেতু XXX * ইঙ্গিত দিয়েছে XXX.YYY.com ইতিমধ্যে, হোস্টনাম কেবল হওয়া উচিত %h, নয়%h.YYY.com
বায়োসাইবারম্যান

8

এটি আমার পক্ষে কাজ করে:

ক্যানোনিকালাইজহস্টনাম হ্যাঁ
ক্যানোনিকাল ডোমেনস xxx.auckland.ac.nz yyy.auckland.ac.nz

হোস্ট * .xxx.auckland.ac.nz
   ব্যবহারকারী মাইজার
হোস্ট * .yyy.auckland.ac.nz
   ব্যবহারকারী মাইজার

এটি একজনকে ডোমেনের মধ্যে নাম ব্যবহার করতে এবং ব্যবহারকারীর নাম পরিবর্তন করতে দেয়:

নীলবোটল: ~ ব্যবহারকারীর_সোন sh ssh itslogprd05
myuser@itslogprd05.xxx.auckland.ac.nz এর পাসওয়ার্ড: 

এটি আমার পক্ষে সেরা উত্তর। আমি আমার কনফিগার তৈরি করতে যে স্ক্রিপ্টটি ব্যবহার করতাম তা থেকে মুক্তি পেয়েছি!
জিক্স

itslogprd05উভয় ডোমেইনে হোস্ট উপস্থিত থাকলে কী হবে ? xxx.auckland.ac.nzজিত, আমার ধারণা?
লেভেন্তে হুস্কো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.