হোস্টনাম দ্বারা ডকার পাত্রে এসএসএস সংযোগগুলি ফরোয়ার্ড করুন


10

আমি একটি খুব নির্দিষ্ট পরিস্থিতিতে পড়েছি এবং এটি করার অন্যান্য উপায় থাকা সত্ত্বেও, আমি এই সম্পর্কে আবেগপ্রবণ হয়েছি এবং একে একে ঠিক এর মতো করার উপায় খুঁজে বের করতে চাই:

পটভূমি

বলুন যে আমার কাছে একটি সার্ভার রয়েছে যা বিচ্ছিন্ন ডকার পাত্রে ফেলে বেশ কয়েকটি পরিষেবা চালাচ্ছে। যেহেতু এই পরিষেবাগুলির বেশিরভাগই http, তাই আমি প্রতিটি পরিষেবায় নির্দিষ্ট সাবডোমেনগুলি প্রকাশ করার জন্য একটি এনগিনেক্স প্রক্সি ব্যবহার করছি। উদাহরণস্বরূপ, একটি নোড সার্ভার একটি ডকার পাত্রে হোস্টের সাথে 80আবদ্ধ তার পোর্টের সাথে চলছে 127.0.0.1:8000। আমি এনগিনেক্সে একটি ভোস্ট তৈরি করব যা সমস্ত অনুরোধের প্রক্সি myapp.mydomain.comকরে http://127.0.0.1:8000। এইভাবে, ডকার পাত্রে বাইরে ছাড়া বাইরে থেকে অ্যাক্সেস করা যায় না myapp.mydomain.com

এখন আমি এমনভাবে গোগস ডকার পাত্রটি শুরু করতে চাই যাতে গোগসের ধারকটির দিকেgogs.mydomain.com ইঙ্গিত হয়। সুতরাং আমি হোস্টের সাথে আবদ্ধ বন্দরের সাথে এই গোগগুলি ধারক শুরু করি । এবং একটি এনজিনেক্স সাইট প্রক্সিংয়ের অনুরোধ করেছে এবং এটি ভালভাবে কাজ করে ...8000127.0.0.1:8001gogs.mydomain.comhttp://127.0.0.1:8001

যাইহোক, গোগগুলি গিট কনটেইনার হওয়ার কারণে আমি রেপোগুলিও অ্যাক্সেস করতে চাই git@gogs.mydomain.com:org/repoতবে এটি বর্তমান সেটআপের সাথে কাজ করে না। সেই কাজটি করার একটি উপায় হ'ল হোস্টের 22পাত্রে পাত্রে পোর্টটি আবদ্ধ করা 0.0.0.0:8022এবং তারপরে git ssh url এর মতো কিছু হতে পারে git@gogs.mydomain.com:8022/repo

(যে কাজ বলে মনে হচ্ছে না; যখন আমি কোনো URI যে ভালো সঙ্গে একটি উৎপত্তি ধাক্কা দিন, Git ব্যবহারকারীর জন্য পাসওয়ার্ড দাবী gitউপর gogs.mydomain.com- পরিবর্তে gogs.mydomain.com:8022- কিন্তু যে সম্ভবত আমি ভুল এবং সুযোগ থেকে বের করছি এই প্রশ্নের জন্য তবে, আমি এটির জন্য কোনও নির্ণয়েরও প্রশংসা করব)

সমস্যা

আমার প্রধান উদ্বেগ হ'ল, আমি চাই যে ssh বন্দরটি <gogs container>:22ঠিক যেমন প্রজেক্ট করা হয় যেমন আমি এনজিএনক্স ব্যবহার করে এইচটিপি বন্দরগুলি প্রক্স করি; অর্থাত্ gogs.mydomain.comকনটেইনার বন্দরে যাওয়ার জন্য যে কোনও এসএসএস সংযোগ রয়েছে 22। হোস্টের ssh বন্দরে এখন আমি ধারকটির ssh বন্দরটিকে আবদ্ধ করতে পারি না কারণ হোস্টটিতে ইতিমধ্যে একটি sshd চলছে। এছাড়াও, এর অর্থ হ'ল যে কোনও সংযোগটি *.mydomain.comধারকটির এসএসডি-তে পাস করতে হবে।


আমি এখানে কোনও এসএসএস সংযোগ চাই:

  • mydomain.com host.mydomain.com বা মায়ডোমেনের আইপি ঠিকানাটি গ্রহণযোগ্য হয়ে হোস্টের এসএসডি-তে ফরোয়ার্ড করা হবে
  • gogs.mydomain.comবা git.mydomain.comগোগস ধারকটিতে এসএসডি-তে একটি পাস গ্রহণযোগ্য হবে accepted
  • *.mydomain.com(যেখানে *উপরের সম্ভাবনা বাদে অন্য কিছু আছে) প্রত্যাখ্যান করা হবে

এটি যদি HTTP হয়, আমি সহজেই এনজিএনএক্সের মাধ্যমে সেই কাজটি করতে পারি। Ssh এর জন্য কি এমন কোনও উপায় আছে?


(এছাড়াও কোনও অঙ্গ প্রত্যঙ্গ নিয়ে জিজ্ঞাসা করতে চাই: সাধারণভাবে কোনও টিসিপি পরিষেবা দিয়ে এটি সম্পাদনের কোনও উপায় আছে কি?)

আমি যেভাবে এখানে এটি করার চেষ্টা করছি তার কোনও অন্তর্দৃষ্টিও স্বাগত। আমি যখন যা করার চেষ্টা করছি তা সম্পূর্ণ নির্বোধ যখন বলা হচ্ছে তাতে আমার আপত্তি নেই।


আমি ইতিমধ্যে আমার মনে যা পেয়েছি:

সম্ভবত আমি roভলিউম হিসাবে ধারকটির সাথে হোস্টে sshd সকেটটি ভাগ করতে পারি ? এর অর্থ হবে যে ধারকটির ভিতরে থাকা এসএসডি সমস্ত সংযোগ নিতে পারে *.mydomain.com। ধারক ভিতরে sshd বা অন্য সব সংযোগ প্রত্যাখ্যান করার উপায় আছে ? তবে হোস্টে থাকা এসএসডিডি সহ যে কোনও উপায়ে সমস্ত সংযোগ গ্রহণ করবে ; সুতরাং একটি বিবাদ হবে। আমি জানি, আমি আসলে চেষ্টা করে দেখিনি। করা উচিত আমি এটা চেষ্টা?gogs.mydomain.comgit.mydomain.com*.mydomain.comgogs.mydomain.com

উত্তর:


2

এটি "হোস্টনাম" দ্বারা করা সহজভাবে ssh এর ক্ষেত্রের মধ্যে নয়। এসএসএস প্রোটোকল নিজেই নাম ভিত্তিক ভার্চুয়াল হোস্টিং সমর্থন করে না (আসলে এইচটিটিপি এখানে বিধি থেকে ব্যতিক্রম)।

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

এটির সাথে কাজ করার জন্য আপনার যদি কেবল কয়েকটি ক্লায়েন্টের প্রয়োজন হয় তবে আপনি প্রতিটি ক্লায়েন্টকে আপনার সার্ভারের সাথে সংযোগ স্থাপনের জন্য কনফিগার করতে পারেন এবং তারপরে ডকের পাত্রে নীচের মত লাফাতে পারেন:

Host yourcontainer
        Hostname internal.ip.of.your.container
        ProxyCommand ssh your.docker.host nc %h %p

এই উপায়ে ssh প্রক্সি কমান্ডটি শুরু করবে যা আপনার হোস্টের জন্য একটি ssh সেশন খুলবে এবং আপনার ধারকটিতে netcatএকটি সংযোগ স্থাপনের জন্য কল করবে। এইভাবে আপনাকে বাইরের বিশ্বে আপনার ধারকগুলির ssh পোর্টটি প্রকাশ করার দরকার নেই।


0

সাম্প্রতিক ওপেনএসএসএইচ সংস্করণে প্রক্সি জাম্প নির্দেশিকা এবং -জে পতাকা রয়েছে:

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