ধরা যাক alice
2 বা ততোধিক ব্যক্তিগত সংগ্রহস্থল সহ একটি গিথুব ডটকম ব্যবহারকারী repoN
। এই উদাহরণে আমরা মাত্র দুই নামে সংগ্রহস্থলগুলির সাথে কাজ করব repo1
এবংrepo2
https://github.com/alice/repo1
https://github.com/alice/repo2
আপনার কোনও সার্ভারে বা একাধিক সার্ভারে পাসওয়ার্ড না লিখে এই সংগ্রহস্থলগুলি থেকে টানতে হবে। আপনি git pull origin master
উদাহরণস্বরূপ সম্পাদন করতে চান এবং আপনি পাসওয়ার্ড না জিজ্ঞাসা করেই এটি ঘটতে চান।
আপনি ssh-এজেন্টের সাথে ডিল করতে পছন্দ করেন না, আপনি ~/.ssh/config
কোনও ফাইল সম্পর্কে আবিষ্কার করেছেন (বা আপনি এখন আবিষ্কার করছেন) যা আপনার এসএসএল ক্লায়েন্টকে হোস্টনাম এবং ব্যবহারকারীর নাম অনুসারে কোন ব্যক্তিগত কী ব্যবহার করতে হবে তা দেখতে দেয়, এমন একটি সাধারণ কনফিগারেশন এন্ট্রির মতো দেখায় এই:
Host github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/alice_github.id_rsa
IdentitiesOnly yes
সুতরাং আপনি এগিয়ে গিয়ে আপনার (alice_github.id_rsa, alice_github.id_rsa.pub)
কিপাইয়ারটি তৈরি করেছেন , আপনি তারপরে আপনার সংগ্রহস্থলের .git/config
ফাইলটিতে গিয়েছিলেন এবং আপনি আপনার রিমোটের ইউআরএলটি origin
এমন কিছু হতে পরিবর্তন করেছেন :
[remote "origin"]
url = "ssh://git@github.com/alice/repo1.git"
এবং অবশেষে আপনি সংগ্রহস্থল Settings > Deploy keys
বিভাগে গিয়ে এর সামগ্রীগুলি যুক্ত করেছেনalice_github.id_rsa.pub
এই মুহুর্তে আপনি git pull origin master
ইস্যু ছাড়াই কোনও পাসওয়ার্ড প্রবেশ না করেই করতে পারেন ।
তবে দ্বিতীয় ভাণ্ডারটির কী হবে?
সুতরাং আপনার প্রবৃত্তিটি repo2
কীটিটি ধরে ফেলতে হবে এবং এটি ডিফলি কীগুলিতে যুক্ত করা হবে, তবে গিথুব ডট কম ত্রুটিযুক্ত হবে এবং আপনাকে বলবে যে কীটি ইতিমধ্যে ব্যবহৃত হচ্ছে।
এখন আপনি যান এবং অন্য কী তৈরি করুন ( ssh-keygen -t rsa -C "alice@alice.com"
অবশ্যই পাসওয়ার্ড ছাড়াই ব্যবহার করে ) এবং যাতে এটি কোনও গোলমাল না হয়ে যায়, আপনি এখন আপনার কীগুলির নাম দিন:
repo1
কী জুটি: (repo1.alice_github.id_rsa, repo1.alice_github.id_rsa.pub)
repo2
কী জুটি: (repo2.alice_github.id_rsa, repo2.alice_github.id_rsa.pub)
আপনি এখন repo2
github.com এ ডিপ্লাই কীগুলির কনফিগারেশনে নতুন পাবলিক কীটি রেখে দেবেন, তবে এখন আপনার মোকাবেলা করতে ssh সমস্যা রয়েছে।
একই github.com
ডোমেনে রিপোজিটরিগুলি হোস্ট করা থাকলে কী কী ব্যবহার করবেন তা এসএসএস কীভাবে বলতে পারে ?
আপনার .ssh/config
ফাইলটি নির্দেশ করে github.com
এবং টান করার সময় কোন কীটি ব্যবহার করতে হবে তা এটি জানেন না।
সুতরাং আমি গিথুব ডট কম নিয়ে একটি কৌশল পেয়েছি। আপনি আপনার এসএসএল ক্লায়েন্টকে বলতে পারেন যে প্রতিটি সংগ্রহস্থল একটি পৃথক github.com সাবডোমেইনে বাস করে, এই ক্ষেত্রে, তারা হবে repo1.github.com
এবংrepo2.github.com
সুতরাং প্রথমে .git/config
আপনার রেপো ক্লোনগুলিতে ফাইলগুলি সম্পাদনা করা হচ্ছে , সুতরাং তারা পরিবর্তে এটি দেখতে দেখতে:
Repo1 এর জন্য
[remote "origin"]
url = "ssh://git@repo1.github.com/alice/repo1.git"
Repo2 জন্য
[remote "origin"]
url = "ssh://git@repo2.github.com/alice/repo2.git"
এবং তারপরে, আপনার .ssh/config
ফাইলে, এখন আপনি প্রতিটি সাবডোমেনের জন্য একটি কনফিগারেশন প্রবেশ করতে সক্ষম হবেন :)
Host repo1.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo1.alice_github.id_rsa
IdentitiesOnly yes
Host repo2.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo2.alice_github.id_rsa
IdentitiesOnly yes
এখন git pull origin master
উভয় ভান্ডার থেকে কোনও পাসওয়ার্ড না দিয়েই আপনি সক্ষম হবেন ।
আপনার যদি একাধিক মেশিন থাকে তবে আপনি প্রতিটি মেশিনের কীগুলি অনুলিপি করতে এবং সেগুলি পুনরায় ব্যবহার করতে পারেন, তবে আমি মেশিনে প্রতি 1 টি কী তৈরি করতে এবং রেপো করার জন্য লেগের কাজ করার পরামর্শ দেব। হ্যান্ডেল করার জন্য আপনার কাছে আরও অনেকগুলি কী থাকবে, তবে যদি কেউ আপস করে তবে আপনি কম দুর্বল হবেন।