প্রশ্ন আপনি একাধিক ~ / .sh / কনফিগার ফাইল থাকতে পারে?


আমাদের একটি বুশ সার্ভার রয়েছে যা আমরা একাধিক হোস্টগুলিতে সংযোগ করার জন্য ব্যবহার করি এবং আমাদের .sh / config একটি হাজার লাইনের বেশি বৃদ্ধি পেয়েছে (আমাদের সাথে শত শত হোস্ট রয়েছে যা আমরা সংযুক্ত করি)। এটি একটি অপ্রত্যাশিত কিছু পেতে শুরু করে এবং আমি জানতে চাই যে .ssh / config ফাইলটি একাধিক ফাইলগুলিতে ফাঁকা করার উপায় আছে কি না। আদর্শভাবে, আমরা কোথাও উল্লেখ করব যে অন্যান্য ফাইলগুলি .ssh / config ফাইল হিসাবে গণ্য হবে, সম্ভবতঃ

~/.ssh/config
  ~/.ssh/config_1
  ~/.ssh/config_2
  ~/.ssh/config_3
  ...

আমি ssh / config-এ ডকুমেন্টেশন পড়েছি, এবং আমি দেখতে পাচ্ছি না যে এটি সম্ভব। কিন্তু হয়তো অন্য কেউ একটি অনুরূপ সমস্যা আছে এবং একটি সমাধান পাওয়া গেছে।


67
2018-03-31 17:47


উত্স


প্রতিটি ব্যবহারকারী তাদের নিজস্ব ব্যবহারকারী নাম দিয়ে বুনিয়াদি হোস্টে লগইন করুন। এছাড়াও, আপনি কনফিগারেশন ফাইলে কী রেখেছেন যা প্রতিটি হোস্টের জন্য একটি এন্ট্রি প্রয়োজন? আপনি সাধারণ কিছু ডিফল্ট সেট করতে পারবেন না? - Jed Daniels
Superuser.com এ একই প্রশ্ন: superuser.com/questions/247564/... - guettli
শীঘ্রই, OpenSSH 7.3 এ যে সম্ভব হওয়া উচিত। bugzilla.mindrot.org/show_bug.cgi?id=1585#c25 - azmeuk


উত্তর:


দ্য ~/.ssh/config ফাইলটি ফাইলের অনুমতিগুলির জন্য SSH এর চেক সম্পর্কিত সম্ভবত অন্যান্য ফাইলগুলি সহ কোনও নির্দেশনা নেই।

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

যাইহোক, আপনি এটির সাথে যোগাযোগ করেন, তবে আপনাকে ফাইলের বাইরে থেকে একটি ফাইল হতে পৃথক ফাইলগুলিকে সংহত করতে হবে।

$ cat ~/.ssh/config_* >> ~/.ssh/config

বিঃদ্রঃ:  ওভাররাইট: >  v.s. যোগ: >>

ডিসেম্বর 2017 আপডেট করুন:

7.3p1 এবং এর থেকে, Include বিকল্প আছে। যা আপনি কনফিগারেশন ফাইল অন্তর্ভুক্ত করতে পারবেন।

Include
    Include the specified configuration file(s).  Mul‐
    tiple pathnames may be specified and each pathname
    may contain glob(3) wildcards and, for user config‐
    urations, shell-like “~” references to user home
    directories.  Files without absolute paths are
    assumed to be in ~/.ssh if included in a user con‐
    figuration file or /etc/ssh if included from the
    system configuration file.  Include directive may
    appear inside a Match or Host block to perform con‐
    ditional inclusion.

41
2018-03-31 18:01



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


Ssh বিকল্পে ব্যবহারের জন্য বর্তমান কনফিগারেশন ফাইলটি উল্লেখ করতে পারেন:

ssh -F /path/to/configfile

মনে হচ্ছে এটি একমাত্র উপায়।

এছাড়াও অন্য একটি কনফিগারেশন অন্তর্ভুক্ত এখন আছে।


40
2018-03-31 18:06



পার্লের নেট :: ওপেনএসএইচ মডিউল (যেমন একাধিক প্রাইভেট কী ফাইলের জন্য।) ব্যবহার করার সময় বিকল্প আছে এমন একটি চমৎকার, যেখানে মডিউল সমস্ত সম্ভাবনাগুলি দেয় না। - Jimmy Koerting


এসএসএস 7.3 দিয়ে শুরু হচ্ছে (1 লা আগস্ট, ২011 তে প্রকাশিত), একটি Include নির্দেশিকা পাওয়া যায়।

অন্তর্ভুক্ত করা: নির্দিষ্ট কনফিগারেশন ফাইল (গুলি) অন্তর্ভুক্ত করুন। একাধিক পথ   নাম উল্লেখ করা যেতে পারে এবং প্রতিটি পাথর মধ্যে গ্লোব থাকতে পারে   ওয়াইল্ডকার্ড এবং শেল-এর মতো ব্যবহারকারীর হোম ডিরেক্টরিগুলিতে "~" রেফারেন্স।   পরম পথ ছাড়া ফাইল হতে অনুমিত হয় ~/.ssh। একটি    Include নির্দেশিকা একটি ভিতরে প্রদর্শিত হতে পারে Match অথবা Host ব্লক   শর্তাধীন অন্তর্ভুক্তি সঞ্চালন।

(এখানে সমাধান করা বাগ রিপোর্টের লিঙ্কটি রয়েছে, যা প্যাচও অন্তর্ভুক্ত করে: https://bugzilla.mindrot.org/show_bug.cgi?id=1585#c24)


31
2017-07-11 15:19



যে খুব শান্ত। এই দিকে তাকান। এটা অবশেষে এই সমস্যাটি সঠিকভাবে সমাধান করা উচিত :) - wrangler
শুধু শীর্ষে অন্তর্ভুক্ত নির্দেশিকা যোগ করুন config ফাইল। আমি বুঝতে পারছি না কেন এটা নীচে কাজ করছে না। - pylover


আমি ব্যক্তিগতভাবে ssh কনফিগারেশন কম্পাইল করার জন্য ঐ কমান্ড ব্যবহার করি:

alias compile-ssh-config='echo -n > ~/.ssh/config && cat ~/.ssh/*.config > ~/.ssh/config'
alias ssh='compile-ssh-config && ssh'
# (This will get used by other programs depending on the ~/.ssh/config)
# (If you need you can run the compile-ssh-config command via cron etc.)

বা:

alias compile-ssh-config='echo -n > ~/.ssh/config-compilation && cat ~/.ssh/*.config > ~/.ssh/config-compilation'
alias ssh='compile-ssh-config && ssh -F ~/.ssh/config-compilation'
# (This is saver and won't over write an existing ~/.ssh/config file)

কারণ:

alias ssh='ssh -F <(cat .ssh/*.config)'

আমার জন্য কাজ করে না, ফিরে:

ssh: Can't open user config file /dev/fd/63: Bad file descriptor

এই যে কোন সাহায্য হবে আশা করি।


17
2017-11-27 15:07



ssh -F <(cat .ssh/*.config) আদর্শ হতে হবে। আমিও এটার সাথে এসেছি, কিন্তু একই ত্রুটি পেয়েছি। যে কেউ এখানে সমস্যা কি জানেন? - sickill
ssh ফাইল অনুমতি পরীক্ষা করে, আমি মনে করি এই ধরনের পুনঃনির্দেশনা এই চেক সমর্থন করে না। - Camden Narzt


আমি ব্যবহার করতে হবে cat config_* > config সম্পূর্ণ কনফিগারেশন উৎপন্ন। তবে এই জন্য আমি পুতুল / সিএফঙ্গিন ইত্যাদি ব্যবহার করব না, যদি তারা এখনো জায়গা না থাকে (বিটিডাব্লিউ: কেন কনফিগারেশন ম্যানেজমেন্ট সিস্টেম ব্যবহার করবেন না ???)।

আমি একটি প্যাকেজ তৈরি করব (ডিবি, আরপিএম) এবং এটি একটি স্থানীয় রিপোজিটরিতে রাখব। এবং postinst স্ক্রিপ্ট মধ্যে বিড়াল আপনার কনফিগার তৈরি করে। সম্ভবত আপনি একটি স্থানীয় ফোল্ডার অন্তর্ভুক্ত ... সুবিধা হল, এসএনএস / কনফিগারেশন আপডেট ক্রন-এপিটি এবং কো রান করার সময় একটি দৈনিক বেসে অ্যাক্টিভেট হয়।


2
2018-03-31 19:34





আপনি একটি Makefile ব্যবহার করতে পারে ~/.ssh:

    config: config.in config.app.in
        > $@
        (for f in $+; do cat $$f; echo; done) | sed '$$ d' >> $@

    config.app.in:
        (echo "# Generated with foobar.sh."; \
            foobar.sh) > $@
    .PHONY: config.app.in

তারপর আপনার বিদ্যমান সরানো config থেকে config.in এবং চালানো make উৎপাদন করতে config


0
2018-05-04 22:18





আমি একটি ধারণা সঙ্গে বাজানো হয়েছে config.d আমার কনফিগ সংগঠনের জন্য ডিরেক্টরি। তাই বিকল্প উপরের পিল যোগ করার জন্য, আমার জন্য কি কাজ করছে এখানে।

ডিরেক্টরি গঠন মত কিছু

~/.ssh/config.d
├── system_1
├── system_2
├── system_3
├── personal_boxen
├── git_things
├── random
└── rubbish

আমার শেল এর রান-কনফিগে ~ / .ssh / config এবং life-build করে এমন ফাংশনটি নিম্নরূপ

sshMakeConfig() {
    echo '# AUTOGENERATED by sshMakeConfig()' > ~/.ssh/config
    for i in ~/.ssh/config.d/*
        do echo "#${i}" | tee -a ~/.ssh/config
        cat ${i} >> ~/.ssh/config
    done
}

ঐচ্ছিকভাবে যোগ করুন sshMakeConfig প্রতিটি শেল অধিবেশনতে একটি নতুন কনফিগারেশন নিশ্চিত করতে চাইলে আপনার রান-কনফিগের নীচে

যেকোনো সময় আমার ~ / .ssh / config পুনরায় কম্পাইল করতে হবে, আমি তা চালিয়ে যাচ্ছি sshMakeConfig কিছু ফর্ম (সরাসরি, আমার রান-কনফিগ sourcing, অথবা একটি নতুন শেল শুরু)


0
2018-03-16 12:59