আমি জানি, আমি এটির খুব দেরীতে উত্তর দিচ্ছি এবং এমনকি যদি সত্যই আমি উত্তর দিতে চাই তবে স্ট্যাকওভারফ্লো নিশ্চিত হয়ে গেছে। আমি উত্তর দিচ্ছি কারণ বাস্তবে কেউই প্রকৃত সমস্যা বর্ণনা করেনি তাই একই ভাগ করতে চাইছিল।
অধিকার
প্রথমে বুঝতে পারি যে এখানে দূরবর্তী কী। রিমোট GitLab হয় এবং আপনার সিস্টেম স্থানীয় তাই যখন আমরা দূরবর্তী সম্পর্কে কথা বলতে origin
যাই হোক না কেন URL আপনার সেট করা হয় git remote -v
আউটপুট আপনার রিমোটের URL।
প্রোটোকল
মূলত, গিট ক্লোন / ধাক্কা / টান মূলত দুটি পৃথক প্রোটোকলে কাজ করে (অন্যরাও আছেন) -
- এইচটিটিপি প্রোটোকল
- এসএসএইচ প্রোটোকল
আপনি যখন কোনও রেপো ক্লোন করেন (বা রিমোট URL টি পরিবর্তন করেন) এবং HTTP গুলি ইউআরএলটি https://gitlab.com/wizpanda/backend-app.git ব্যবহার করেন তখন এটি প্রথম প্রোটোকল অর্থাৎ HTTP প্রোটোকল ব্যবহার করে।
আপনি যদি রেপো ক্লোন করে (বা রিমোট URL টি পরিবর্তন করেন) এবং ইউআরএল ব্যবহার করেন git@gitlab.com:wizpanda/backend-app.git
তবে এটি এসএসএইচ প্রোটোকল ব্যবহার করে।
এইচটিটিপি প্রোটোকল
এই প্রোটোকলে, প্রতিটি দূরবর্তী অপারেশন যেমন ক্লোন, ধাক্কা এবং টান আপনার প্রত্যন্তর ব্যবহারকারীর নাম এবং পাসওয়ার্ড (এই ক্ষেত্রে গিটল্যাব) ব্যবহার করে যার অর্থ প্রতিটি অপারেশনের জন্য আপনাকে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড টাইপ-ইন করতে হবে যা জটিল হতে পারে ।
সুতরাং যখন আপনি ধাক্কা / টান / ক্লোন করবেন, গিটল্যাব / গিটহাব আপনাকে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে প্রমাণীকরণ করবে এবং এটি আপনাকে অপারেশন করতে দেয় to
আপনি যদি এটি চেষ্টা করতে চান তবে আপনি কমান্ডটি চালিয়ে HTTP URL- এ স্যুইচ করতে পারেন git remote set-url origin <http-git-url>
।
সে ক্ষেত্রে এড়াতে, আপনি এসএসএইচ প্রোটোকলটি ব্যবহার করতে পারেন।
এসএসএইচ প্রোটোকল
একটি সাধারণ এসএসএইচ সংযোগ সরকারী-বেসরকারী কী জোড়গুলিতে কাজ করে। সুতরাং আপনার ক্ষেত্রে, গিটল্যাব আপনাকে প্রমাণীকরণ করতে পারে না কারণ আপনি যোগাযোগের জন্য এসএসএইচ ইউআরএল ব্যবহার করছেন। এখন, গিটল্যাব আপনাকে অবশ্যই কোনওভাবে জানতে হবে। তার জন্য, আপনাকে একটি পাবলিক-প্রাইভেট কী-জুটি তৈরি করতে হবে এবং গিটল্যাবকে সর্বজনীন কী দিতে হবে।
এখন আপনি যখন গিটল্যাবের সাথে ধাক্কা / টান / ক্লোন করবেন, তখন জিআইটি (এসএসএইচ অভ্যন্তরীণভাবে) ডিফল্টরূপে গিটল্যাবকে আপনার ব্যক্তিগত কী সরবরাহ করে এবং আপনার পরিচয় নিশ্চিত করে এবং তারপরে গিটল্যাব আপনাকে অপারেশন করার অনুমতি দেয়।
সুতরাং আমি মুহাম্মদ দ্বারা ইতিমধ্যে দেওয়া পদক্ষেপগুলি পুনরাবৃত্তি করব না, আমি তাদের তাত্ত্বিকভাবে পুনরাবৃত্তি করব।
- একটি মূল জুটি তৈরি করুন sh ssh-keygen -t rsa -b 2048 -C "আমার সাধারণ SSH কী"
- উত্পাদিত কী জুটি ডিফল্টরূপে
~/.ssh
নামযুক্ত id_rsa.pub
(পাবলিক কী) এবং id_rsa
(ব্যক্তিগত কী) হবে।
- আপনি আপনার গিটল্যাব অ্যাকাউন্টে সর্বজনীন কী সংরক্ষণ করবেন (একই কীটি একাধিক বা কোনও সার্ভার / অ্যাকাউন্টগুলিতে ব্যবহার করা যেতে পারে)।
- আপনি যখন ক্লোন / ধাক্কা / টানেন, জিআইটি আপনার ব্যক্তিগত কী সরবরাহ করে।
- গিটল্যাব আপনার সর্বজনীন কীটির সাথে প্রাইভেট কীটি মেলে এবং আপনাকে সম্পাদনা করার অনুমতি দেয়।
পরামর্শ
আপনার সর্বদা কমপক্ষে 2048 বাইট সহ একটি শক্তিশালী আরএসএ কী তৈরি করা উচিত। সুতরাং কমান্ড হতে পারে ssh-keygen -t rsa -b 2048
।
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
সাধারণ চিন্তা
উভয় পদ্ধতিরই তাদের পক্ষে মতামত রয়েছে। আমি উপরের পাঠ্যটি টাইপ করার পরে, আমি এটি সম্পর্কে আরও অনুসন্ধান করতে গিয়েছিলাম কারণ আমি এই বিষয়ে কখনই পড়ি না।
আমি এই অফিশিয়াল ডকটি https://git-scm.com/book/en/v2/Git-on-the-Server-The-Potocols খুঁজে পেয়েছি যা এ সম্পর্কে আরও জানায়। এখানে আমার বক্তব্যটি হ'ল, ত্রুটিটি পড়ে এবং ত্রুটিটি সম্পর্কে একটি চিন্তাভাবনা দেওয়ার মাধ্যমে আপনি নিজের তত্ত্ব বা বোঝাপড়া তৈরি করতে পারেন এবং তারপরে সমস্যাটি সমাধানের জন্য কিছু গুগলের ফলাফলের সাথে মিল করতে পারেন :)
ssh -vvvv git@gitlab.com
এটি এসএসএইচ কীটি তুলে নিয়েছে কিনা তা দৌড়ে যান