নেটওয়ার্ক-নির্ভর ~ / .ssh / কনফিগারেশন?


15

অফিসে, আমি প্রক্সি ছাড়াই অভ্যন্তরীণ মেশিনে সংযোগ করতে পারি, তবে বাহ্যিক সংযোগের জন্য একটি প্রক্সি প্রয়োজন। অফিসের বাইরে, আমি প্রক্সি ছাড়াই অন্য বাহ্যিক মেশিনের সাথে সংযোগ করতে পারি, তবে অভ্যন্তরীণ মেশিনে সংযোগ স্থাপনের জন্য 2 টির মধ্যে একটি প্রক্সি ব্যবহার করতে হবে।

আমি যদি কোন নেটওয়ার্কে আছি তা স্বয়ংক্রিয়ভাবে সনাক্ত করার কোনও উপায় যদি আমি জানতে পারি, তবে আমি কী উপযুক্ত কনফিগারেশন ফাইলটি লোড করার জন্য এসএসএসকে নির্দেশ দিতে পারি?

যদি তা না হয় তবে উপযুক্ত কনফিগারেশন ফাইলটিকে ml / .ssh / কনফিগারেশনে (এখনও অবধি আমার সেরা ধারণা) সিমলিংক করার জন্য শেল স্ক্রিপ্ট লেখার চেয়ে আরও কার্যকর সমাধান কি আছে?

সম্পাদনা: আমি মনে করি @ পিএমসি এবং জনিরো আমার প্রশ্নটি বুঝতে পেরেছেন এবং আমি তাদের পরামর্শটি চেষ্টা করব, তবে কেবল পরিষ্কার হতে চাই, আমি চাই

|--------\    Dest   | abc.example.com | xyz.external.org |
| Source  \---------\|                 |                  |
|--------------------+-----------------+------------------|
| example.com office | No Proxy        | Proxy            |
| outside            | Proxy           | No Proxy         |

উত্তর:


11

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

# proxy ssh 
Host *%sshproxy
    ProxyCommand ssh user@proxyhost.example.org /bin/netcat -w 1 $(echo %h | cut -d%% -f1) 22

Host myhost.example.org
    HostName 172.16.24.1

Host otherhost.example.com
    HostName 192.168.57.12

সুতরাং যখন আমার কোনও প্রক্সি ব্যবহার করার দরকার নেই তখন আমি কেবল একটি কমান্ড চালাতে পারি ssh myhost.example.orgএবং সংযুক্ত হতে পারি তবে যখন আমার প্রক্সিটির প্রয়োজন হয় তখন আমি কমান্ডটি চালাচ্ছি ssh myhost.example.org%sshproxy

আমার সন্দেহ হয় আপনি সম্ভবত কোনওরকম উপন্যাস বা স্বয়ংক্রিয়-সম্পূর্ণ সেটিংস সেটআপ করতে পারেন যা %proxyবিটটি স্বয়ংক্রিয়ভাবে সংযোজন করবে ।


9

পুরানো প্রশ্ন, তবে এই থ্রেডের কিছু ধারণা আমাকে সহায়তা করেছে এবং এটিই একটি সমাধান যা আমি এনেছি:

প্রথমত, প্রক্সি সার্ভার ssh কনফিগারেশন।

Match Originalhost proxy Exec "ifconfig | grep 10.0.1"
     Hostname 10.0.1.2
Host proxy 
     Hostname external.hostname.com

তারপরে, সার্ভার বি কনফিগারেশন:

Match Originalhost server-b Exec "ifconfig | grep 10.0.1"
     ProxyCommand none
Host server-b
     Hostname 10.0.1.3
     ProxyCommand ssh -W %h:%p server-a

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

আপনি যেখানেই থাকুন না কেন, আপনি সর্বদা এই এন্ট্রি দ্বারা সার্ভার-এবিসিতে পৌঁছাতে পারেন এবং এই সেটআপটি আপনি কোথায় আছেন তা নির্ধারণ করে এবং সেই অনুযায়ী সংযোগ স্থাপন করে। জন্য সার্ভার-Xyz শুধু একই ধারণা ব্যবহার করুন।

আমি এখানে আরও বিশদ ব্যাখ্যা দিয়েছি: http://blog.kihltech.com/2017/04/ssh-conditional-host-address-based-on-network-or-location/


7

আপনি বিভিন্ন কনফিগারেশন ফাইল থেকে নির্বাচন করতে -F বিকল্পটি ব্যবহার করতে পারেন। দুটি নেটওয়ার্ক ক্ষেত্রে। তারপরে আপনি হয় এমন কোনও এলিয়াস তৈরি করতে পারেন যা আপনি বিভিন্ন নেট কনফিগার ফাইল ব্যবহার করেন, আপনি কোন নেট ব্যবহার করছেন তার উপর ভিত্তি করে, বা আপনার লগইন স্ক্রিপ্টে আপনার আইপি ঠিকানার ভিত্তিতে একটি একক উলেস সেটআপ করতে পারেন।


ধন্যবাদ! যদি আমি আইপি উপর ভিত্তি করে স্ক্রিপ্ট কাজ না করতে পারি তবে -F সহ এলিয়াসগুলি অবশ্যই আমার ফ্যালব্যাক হবে।
নাট পার্সনস

এটি দুর্দান্ত, আমি ঠিক একই প্রশ্নটি করতে চলেছিলাম। আমি যখন নতুন টার্মিনাল শুরু করি তখন পরিবেশের ভেরিয়েবলগুলি সেট করতে আমি ইতিমধ্যে কিছু অন্যান্য বিকল্পের স্ক্রিপ্ট করেছি, আমি সহজেই একটি উপাত্ত তৈরি করতে পারি বা পরিবেশের উপর ভিত্তি করে যথাযথ .ssh / কনফিগার তৈরি করতে পারি।
newz2000

1

এমন শেল স্ক্রিপ্ট লিখুন যা আপনার আইপিটিকে কোনও প্যাটার্নের বিপরীতে পরীক্ষা করে, তারপরে যথাযথ শেল স্ক্রিপ্টটি সিমিলিং করে।

যদি কোনও কারণে আপনার আইপি পরিসীমা বাড়ি এবং কাজের জন্য একই হয় তবে /etc/resolv.conf এর উপর ভিত্তি করে স্যুইচ করার চেষ্টা করুন, এতে DHCP কনফিগার করা DNS সার্ভার রয়েছে।


0

.Ssh / কনফিগারেশনে "হোস্ট" বিকল্প আপনাকে গন্তব্যের উপর ভিত্তি করে কনফিগারেশনটি পরিবর্তন করতে দেয়। আমি পোর্ট ফরওয়ার্ডিং এবং যেখানে আমি যাচ্ছি তার উপর ভিত্তি করে সামঞ্জস্য করতে এটি ব্যবহার করি।


0

আমি এই প্রশ্নটি অতীতে দেখেছি এবং এর একটি সম্ভাব্য সমাধান হ'ল কনফিগারেশ ফাইলটিতে এই জাতীয় প্রবেশ করা:

Host ENTRY_POINT
Hostname ENTRY_POINT_FQDN
User USERNAME

Host *.INSIDE_DOMAIN
ProxyCommand ssh ENTRY_POINT nc %h %p

এইভাবে, আপনি বাইরে থাকলে, আপনি sh ssh machine.inside_domain করতে পারেন। আপনি যদি ভিতরে থাকেন এবং ডিএনএস সমাধানের ব্যবস্থা করে থাকেন তবে আপনি মেশিনটি এসএসএস করতে পারেন। এটা আমার জন্য ভাল কাজ করে।

হতে পারে যে কেউ এই ধারণার উন্নতি করতে পারে, ডিএনএস কনফিগারেশন পরিবর্তন করতে পারে তাই আপনি বাইরে থাকলে এবং এসএসএইচ এন্ট্রি পয়েন্টটি ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে মেশিনটিকে মেশিন.আইসাইড_ডমিনে সমাধান করে।

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