কেন GitHub SSH উপর HTTPS সুপারিশ করে?



(7)

GitHub দ্বারা HTTPS প্রস্তাবিত কারণ এটি সমস্ত ফায়ারওয়ালগুলিতে খোলা একটি পোর্ট। এসএসএইচ সবসময় নেটওয়ার্কে যোগাযোগের জন্য একটি পোর্ট হিসাবে খোলা থাকে না এবং এটি প্রায়শই নেটওয়ার্ক ফায়ারওয়াল দ্বারা অবরুদ্ধ থাকে।

একটি GitHub সংগ্রহস্থল SSH এর চেয়ে HTTPS ব্যবহার করে সর্বজনীনভাবে অ্যাক্সেসযোগ্য।

এসএসএইচ কীগুলি আরও নিরাপদ রয়েছে যাতে তারা আপনার GitHub অ্যাকাউন্টে অ্যাক্সেস সরবরাহ করে না, যদিও কেউ আপনার ব্যক্তিগত কীটি ধরে রাখে তবে তারা একটি খালি সংগ্রহস্থলের একটি বল ধাক্কা দিতে এবং আপনার পরিবর্তন ইতিহাস মুছে ফেলতে পারে।

আমার পছন্দ একটি পাসফ্রেজ সুরক্ষিত কী সঙ্গে SSH ব্যবহার করা হয়। এসএসএইচটি যদি HTSPS এ SSH পোর্ট ব্লক করে থাকে তবে এটি টানেল করা যেতে পারে।

https://help.github.com/articles/using-ssh-over-the-https-port/

আপনি যদি HTTPS ব্যবহার করেন, তবে আমি আপনার অ্যাকাউন্ট এবং আপনার সংগ্রহস্থলের সুরক্ষার জন্য দুই-ফ্যাক্টর প্রমাণীকরণ যোগ করার সুপারিশ করব।

GitHub সাইটে একটি লিঙ্ক আছে ...

https://help.github.com/articles/generating-ssh-keys

... এবং এটা বলে ...

আপনি প্রস্তাবিত HTTPS পদ্ধতিটি ব্যবহার না করার সিদ্ধান্ত নিলে আমরা আপনার কম্পিউটার এবং গিটহাবের মধ্যে একটি নিরাপদ সংযোগ স্থাপন করতে এসএসএইচ কীগুলি ব্যবহার করতে পারি। নীচের পদক্ষেপগুলি আপনাকে একটি এসএসএইচ কী তৈরি করে এবং আপনার GitHub অ্যাকাউন্টে সর্বজনীন কী যুক্ত করে হাঁটবে।

কেন HTTPS সুপারিশ পদ্ধতি? এসএসএইচ পদ্ধতিতে নিরাপত্তা ত্রুটি কোন ধরণের আছে বা এটি ধীর? আমি একটি এসএসএইচ কী তৈরি করেছি, তাই যে কোন নিরাপত্তা উদ্বেগ কমানো হবে?


GitHub অনেকবার তাদের সুপারিশ পরিবর্তিত হয়েছে ( example )।

মনে হচ্ছে তারা বর্তমানে HTTPS এর সুপারিশ করে কারণ এটি নেটওয়ার্ক এবং প্ল্যাটফর্মের বিস্তৃত পরিসর এবং এটির জন্য নতুন ব্যবহারকারীদের দ্বারা সেট করা সহজ।

এসএসএইচ-এ কোন অন্তর্নিহিত ত্রুটি নেই (যদি তারা এটি নিষ্ক্রিয় করে থাকে) - নীচের লিঙ্কগুলিতে, আপনি দেখবেন যে তারা এখনও এসএসএইচ সংযোগ সম্পর্কে বিস্তারিত জানায়:

  1. কোনও ফায়ারওয়াল দ্বারা HTTPS অবরুদ্ধ হওয়ার সম্ভাবনা কম।

    https://help.github.com/articles/which-remote-url-should-i-use/

    Https: // ক্লোন ইউআরএল সকল সংগ্রহস্থল, পাবলিক এবং প্রাইভেটে উপলব্ধ। এই URL গুলো সর্বত্র কাজ করে - এমনকি যদি আপনি ফায়ারওয়াল বা প্রক্সির পিছনে থাকেন।

  2. একটি HTTPS সংযোগ আপনার পাসওয়ার্ড ক্যাশে credential.helper অনুমতি দেয়।

    https://help.github.com/articles/set-up-git

    জানা ভাল: যখন আপনি একটি HTTPS রেপো URL ক্লোন করেন তখন শংসাপত্র সহায়ক কেবলমাত্র কাজ করে। পরিবর্তে আপনি SSH repo URL ব্যবহার করলে, SSH কীগুলি প্রমাণীকরণের জন্য ব্যবহৃত হয়। যদিও আমরা এটি সুপারিশ করি না, আপনি যদি এই পদ্ধতিটি ব্যবহার করতে চান তবে SSH কী তৈরি এবং ব্যবহার করার জন্য এই সহায়িকাটি দেখুন।


এটি প্রমাণ করা সম্ভব যে প্রমাণীকরণের জন্য SSH কী কী ব্যবহার করা নিরাপদ নয় কারণ আমরা নতুন SSH কীগুলি তৈরি করার চেয়ে আমাদের পাসওয়ার্ডটি আরও সময়সাপেক্ষভাবে পরিবর্তন করতে ঝোঁক।

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


সম্ভবত আপনার মস্তিষ্ক থেকে পাসওয়ার্ড চুরি করা আপনার কম্পিউটার থেকে একটি কী ফাইল চুরি করা (অন্তত আমার জ্ঞান হতে পারে, হয়তো কিছু পদ ইতিমধ্যেই বা পদ্ধতি আছে তবে এটি একটি অসীম আলোচনার) হতে পারে? এবং যদি আপনি কী পাসওয়ার্ডটি রক্ষাকারী করেন তবে আপনি আবার পাসওয়ার্ড ব্যবহার করছেন এবং একই সমস্যাগুলি উত্থাপন করে (তবে কিছু বলতে পারে যে আপনাকে আরো কাজ করতে হবে, কারণ আপনি কীটি পেতে এবং পাসওয়ার্ডটি ক্র্যাক করতে চান)।


এছাড়াও দেখুন: অফিসিয়াল কোন দূরবর্তী URL ব্যবহার করা উচিত? help.github.com এ উত্তর দিন।

সম্পাদনা করুন:

মনে হচ্ছে যে এসএসএইচ URL ব্যবহার করার জন্য জনসাধারণের রেপোতে লেখার অ্যাক্সেস আর নেই, আমার মূল ব্যাখ্যাটি অবৈধ রূপান্তর করা হয়েছে।

মূল:

সম্ভবত HTTPS URL গুলির পক্ষে প্রধান কারণ হল যে যদি আপনার কাছে সেই রেপোতে লেখার অ্যাক্সেস না থাকে তবে SSH URL গুলি একটি পাবলিক রেপোতে কাজ করবে না।

এসএসএইচ ইউআরএল ব্যবহার উত্পাদন সার্ভারে স্থাপনার জন্য উত্সাহিত করা হয়, তবে - সম্ভবত এখানে প্রসঙ্গটি হেরোকোয়ের মতো পরিষেবা।


এটি যদি ফায়ারওয়াল দ্বারা অবরুদ্ধ থাকে তাহলে HTTPS এর উপর এসএসএইচ সংযোগ সক্ষম করা

HTTPS পোর্টে SSH যদি সম্ভব হয় তবে পরীক্ষা করুন, এই এসএসএইচ কমান্ডটি চালান:

$ ssh -T -p 443 [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

যে কাজ, মহান! যদি না হয়, আপনি আমাদের সমস্যা সমাধান গাইড অনুসরণ করতে হতে পারে।

আপনি যদি পোর্ট 443 এর উপর [email protected] SSH করতে সক্ষম হন, তবে আপনি যে সার্ভার এবং পোর্টটি চালানোর জন্য GitHub এ যেকোনো সংযোগ জোর করার জন্য আপনার এসএসএইচ সেটিংসকে ওভাররাইড করতে পারেন।

আপনার ssh কনফিগারেশনে এটি নির্ধারণ করতে, ~/.ssh/config এ ফাইলটি সম্পাদনা করুন, এবং এই বিভাগটি যোগ করুন:

Host github.com
  Hostname ssh.github.com
  Port 443

আপনি GitHub এ আরও একবার সংযোগ করে এই কাজটি পরীক্ষা করতে পারেন:

$ ssh -T [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

https://help.github.com/articles/using-ssh-over-the-https-port/


গিট সংস্করণ 1.7.9 এবং পরে

জিটি 1.7.9 (জানুয়ারী ২01২-এর শেষের দিকে প্রকাশিত) থেকে, জিটিএতে একটি সুনির্দিষ্ট প্রক্রিয়া রয়েছে যা HTTP / HTTPS এর জন্য সর্বদা আপনার পাসওয়ার্ড টাইপ করতে বাধা দেয়, যাকে ক্রেডেনশিয়াল হেল্পার্স বলা হয়। (নীচের মতামত এই নতুন বৈশিষ্ট্য ইঙ্গিত জন্য dazonic ধন্যবাদ।)

গিট 1.7.9 বা তার পরে, আপনি কেবল নিম্নলিখিত ক্রেইশিয়াল হেল্পারগুলির মধ্যে একটি ব্যবহার করতে পারেন:

git config --global credential.helper cache

... যা জিটকে আপনার পাসওয়ার্ডটি 15 মিনিটের জন্য (ডিফল্টভাবে) মেমরিতে ক্যাশে রাখতে বলে। আপনি এর সাথে দীর্ঘ সময়সীমা নির্ধারণ করতে পারেন:

git config --global credential.helper "cache --timeout=3600"

(এই উদাহরণটি লিনাক্সের জন্য গিথ হাব সহায়তা পৃষ্ঠাতে প্রস্তাবিত হয়েছিল।) আপনি যদি চান তবে আপনার ক্র্যাশশিপগুলি স্থায়ীভাবে সংরক্ষণ করতে পারেন, নীচের অন্যান্য উত্তরগুলি দেখুন।

গিটহাব এর সাহায্যটিও প্রস্তাব করে যে আপনি যদি ম্যাক ওএস এক্স এ থাকেন এবং জিট ইনস্টল করতে Homebrew ব্যবহার করেন তবে আপনি নীচের ম্যাক ওএস এক্স কীস্টোর ব্যবহার করতে পারেন:

git config --global credential.helper osxkeychain

উইন্ডোজের জন্য, উইন্ডোজের জন্য গিট ক্রেডেনশিয়াল ম্যানেজার নামে একটি সহায়ক বা মাইসিগেটে উইঙ্ক্রেড আছে

git config --global credential.helper wincred # obsolete

উইন্ডোজ 2.7.3+ এর জন্য গিট দিয়ে (মার্চ 2016):

git config --global credential.helper manager

লিনাক্সের জন্য, আপনি gnome-keyring (অথবা KWallet এর মতো অন্যান্য কীরণের প্রয়োগ) ব্যবহার করতে পারেন

1.7.9 আগে গিট সংস্করণ সঙ্গে

1.7.9 এর আগে গিট সংস্করণগুলির সাথে, এই আরও নিরাপদ বিকল্প পাওয়া যায় না এবং আপনাকে এই রূপে পাসওয়ার্ডটি অন্তর্ভুক্ত করার জন্য আপনার origin রিমোট ব্যবহার করে এমন URL পরিবর্তন করতে হবে:

https://you:[email protected]/you/example.git

... এর সাথে অন্য কথায় :password ব্যবহারকারীর নাম এবং :password আগে :password

আপনি আপনার origin দূরবর্তী জন্য একটি নতুন URL সেট করতে পারেন:

git config remote.origin.url https://you:[email protected]/you/example.git

আপনি https ব্যবহার করেন তা নিশ্চিত করুন, এবং আপনাকে সচেতন হওয়া উচিত যে যদি আপনি এটি করেন তবে আপনার GitHub পাসওয়ার্ডটি আপনার .git ডিরেক্টরিতে প্লেইনটেক্সটে সংরক্ষণ করা হবে যা অবশ্যই অযৌক্তিক।

কোন Git সংস্করণ (ভাল, সংস্করণ 0.99 থেকে) সঙ্গে

একটি বিকল্প পদ্ধতি আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি আপনার ~/.netrc ফাইলে ~/.netrc হবে, যদিও, দূরবর্তী URL এ পাসওয়ার্ডটি রাখার সাথে সাথে, এর মানে হল যে আপনার পাসওয়ার্ডটি ডিস্কে প্লেইন সংরক্ষণ করা হবে এবং এভাবে কম নিরাপদ এবং সুপারিশ করা হয় না। যাইহোক, যদি আপনি এই পদ্ধতিটি নিতে চান তবে নিম্নোক্ত লাইনটিকে আপনার ~/.netrc :

machine <hostname> login <username> password <password>

... <hostname> সার্ভারের হোস্টনাম সহ, এবং <username> এবং <password> আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে প্রতিস্থাপন করছে। এছাড়াও সেই ফাইলটিতে বিধিবদ্ধ ফাইল সিস্টেমের অনুমতিগুলি সেট করতে মনে রাখবেন:

chmod 600 ~/.netrc

মনে রাখবেন যে উইন্ডোজ এ, এই ফাইলটিকে _netrc বলা উচিত, এবং আপনাকে% HOME% এনভায়রনমেন্ট ভ্যারিয়েবল সংজ্ঞায়িত করতে হবে - আরো বিস্তারিত জানার জন্য দেখুন:





git github ssh https