প্রশ্ন অ ইন্টারেক্টিভ গিট ক্লোন (এসএসএস ফিঙ্গারপ্রিন্ট প্রম্পট) [নকল]


এই প্রশ্নটি ইতিমধ্যে একটি উত্তর আছে:

আমি একটি অ ইন্টারেক্টিভ ভাবে একটি রেপো ক্লোন করতে চান। ক্লোন করার সময়, জিট হোস্টের আঙ্গুলের ছাপ নিশ্চিত করতে বলে:

The authenticity of host 'bitbucket.org (207.223.240.182)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? no

আমি কিভাবে এই প্রশ্ন pops যখন "হ্যাঁ" বলবেন না? আমি ব্যবহার করার চেষ্টা করেছিলাম yes yes | git clone ..., কিন্তু এটা কাজ করে না।

সম্পাদনা করুন: এখানে একটি সমাধান: আমি স্বয়ংক্রিয়ভাবে পরিচিত_হস্টগুলিতে একটি নতুন হোস্ট যোগ করতে পারি? (ssh-keyscan সহ পরিচিত_হস্তিসমূহে entires যোগ করে)।


108
2017-11-09 09:04


উত্স


দেখতে আগ্রহী যে এমনকি দুই বছর পরেও এই প্রশ্নের সঠিক উত্তর নেই। Git প্রম্পট করবে এমন কয়েকটি অন্যান্য ক্ষেত্রে রয়েছে, উদাহরণস্বরূপ আপনি যদি HTTP এর উপর ক্লোন করার চেষ্টা করেন এবং সার্ভার মৌলিক_আথের জন্য জিজ্ঞাসা করে। কিভাবে অ ইন্টারঅ্যাক্টিস মোডে এই কাজ করবেন? - sorin
যোগ করা হচ্ছে -q বিকল্প (শান্ত) এটা আমার জন্য করেনি। এখন আমি পাসফ্রেজ স্বয়ংক্রিয়ভাবে আটকে করছি।


উত্তর:


আমি মনে করি না এটি সর্বোত্তম সমাধান, তবে এটি আমার জন্য একটি সমাধান ছিল।

উত্তর:

ডোমেইন নাম যোগ করা known_hosts ফাইল ব্যবহার করে ssh-keyscan কমান্ড সমাধান সমাধান:

ssh-keyscan <enter_domainname_e.g._github.com> >> ~/.ssh/known_hosts


92
2017-11-02 04:13



এই ভাবে করবেন না দয়া করে। এটি পুরোপুরি নিরাপদ নয়: আঙ্গুলের ছাপগুলি আপনাকে বিরক্ত করার জন্য এখানে নেই তবে এটি নিশ্চিত করার জন্য যে আপনি একজন মানুষের মধ্যস্থতাকারীর মুখোমুখি হন না। নিচে আমার উত্তর দেখুন দয়া করে। - autra
যেমনটা আমি বলেছিলাম, "আমি মনে করি না যে এটি সর্বোত্তম সমাধান, তবে এটি আমার জন্য সমাধান ছিল।" কারণ আমি ভীষণ উত্তেজিত ছিলাম, নিশ্চিতভাবেই এটির "পোলিটিটালি সঠিক উপায়" ((: - kroe
এটি রাজনৈতিকভাবে সঠিক একটি প্রশ্ন নয় :-) এটি নিরাপদ কিনা তা একটি প্রশ্ন। আপনার সমাধানটি যদি নিরাপদ হয় এবং শুধুমাত্র আপনি নিজের পরে আঙ্গুলের ছাপ পরীক্ষা করে থাকেন ssh-keyscan এবং এটি যোগ করার আগে .ssh/known_hosts এক github তাদের ওয়েবসাইটে প্রকাশিত হয়েছে একই হতে। আপনি বিভিন্ন উপায়ে এটি করতে পারেন, এবং খনি তাদের এক। আপনি আপনার স্ক্রিপ্টে সমান চেক করতে পারেন, কিন্তু শেষ পর্যন্ত এটি এগুলি আসে: আপনার স্ক্রিপ্টটি আপনার কোন স্ক্রিপ্টপ্রিন্টটি প্রত্যাশা করে তা জানতে হবে এবং যদি এটি সঠিক না পান তবে ব্যর্থ হওয়ার প্রয়োজন হয়। - autra
যদি এটি বিদ্যমান না শুধুমাত্র মূল যোগ করুন ssh-keygen -F github.com || ssh-keyscan github.com >>~/.ssh/known_hosts - transang
কনফিগারেশনের ব্যবস্থাপনা বা সংস্থান চালানোর অংশ হিসাবে এটি একবার করা উচিত। যদি ভবিষ্যতে ফিঙ্গারপ্রিন্ট কখনও পরিবর্তন হয়, তবে এসএসএসটি উদ্দেশ্য হিসাবে কাজ করবে এবং আপনাকে সতর্ক করে দেবে যে শংসাপত্রটি পরিবর্তিত হয়েছে, একটি 0 প্রস্থান কোডটি ফেরত দিয়েছে। এটি যে কোন স্ক্রিপ্ট থামাতে পারে যেখানে আপনি ssh বা git ব্যবহার করছেন। - emhohensee


Neither "StrictHostKeyChecking no" বা "ssh-keyscan" বিকল্পগুলি নিরাপদ নয়। আপনি প্রয়োজন যদি আপনি ssh এর সাথে আটকে থাকেন তবে MiTM আক্রমণ এড়াতে কিছুটা সময় একটি ম্যানুয়াল ফিঙ্গারপ্রিন্ট বৈধতা।

আসলে, আপনার 2 টি বিকল্প রয়েছে:

গিট পরিবর্তে https প্রোটোকল ব্যবহার করুন

এটি আপনাকে একটি ফিঙ্গারপ্রিন্টের জন্য জিজ্ঞাসা করবে না, কারণ এসএসএস জড়িত নয়, পরিবর্তে https ব্যবহার করা হয়। একটি নিরাপত্তা দৃষ্টিকোণ জন্য আপনি আপনার আপনার OS এ root সার্টিফিকেট installod বিশ্বাস করা হয়। আপনি যদি একটি সর্বনিম্ন চিত্র বা ডকার ব্যবহার করেন তবে আপনাকে CA- সার্টিফিকেট প্যাকেজ ইনস্টল করতে হতে পারে।

আপনি সত্যিই git + ssh প্রোটোকল চান

আপনি কি রানটাইম এ কী যোগ করতে চান? এটি নিরাপদ নয় কারণ আপনি আঙ্গুলের ছাপ পরীক্ষা করে নিচ্ছেন এবং এটি আপনাকে এমটিটিএম আক্রমণগুলিতে ছেড়ে দেয়। এটি কেবলমাত্র তাত্ত্বিক নয়, এবং এটি কাজ প্রমাণিত হয়েছে।

আপনার স্ক্রিপ্ট চালানোর আগে, github (আপনার স্থানীয় মেশিনে) থেকে কীটি পান:

ssh-keyscan github.com >> githubKey

আঙ্গুলের ছাপ তৈরি করুন:

ssh-keygen -lf githubKey

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

তারপরে, আপনি এটি যুক্ত করে আপনার স্ক্রিপ্টে এটি হরকড করুন:

echo '<copy paste the content of 'cat githubKey' on your machine>'  >> ~/.ssh/known_hosts

গিট ক্লোন আগে।

GitHub পাবলিক কী কেবল তখনই পরিবর্তিত হবে যদি তারা বিশ্বাস করে যে এটি আপস করা হয়েছে (অথবা যথেষ্ট নিরাপদ নয়)। যদি এই ক্ষেত্রে কখনও, আপনি প্রয়োজন আপনার স্ক্রিপ্ট যাইহোক ব্যর্থ।


80
2018-06-25 15:39



এই প্রশ্ন শুধুমাত্র সঠিক এবং নিরাপদ উত্তর। কেন এটা শেষ? আমি মানবতার লজ্জিত নই ;-( - Jan Warchoł
আপনি দুর্ভাগ্যবশত দুটি ফ্যাক্টর AUTH ব্যবহার করলে আপনি GitHub এর সাথে অ-ইন্টারেক্টিভ HTTPS করতে পারবেন না। - Brett Widmeier
আমি দেখি না কেন। আমরা এখানে একটি পাবলিক repo সম্পর্কে কথা বলা হয়, প্রমাণীকরণের জন্য কোন প্রয়োজন নেই। একটি স্ক্রিপ্ট থেকে একটি ব্যক্তিগত রেপো ক্লোনিং সম্পূর্ণ অন্য জিনিস: আপনি যাতে আপনার স্ক্রিপ্ট অনুমোদন করতে হবে। - autra
ফিঙ্গারপ্রিন্টটি "ম্যানুয়াল" পরীক্ষাটি আধুনিক অনুসন্ধানকারীগুলির মধ্যে "অনুসন্ধান বার" এর সহায়তার চেয়ে কম বেদনাদায়ক (যেমন ইন ক্রৌমিয়াম)। - Franklin Yu


আমি এখানে একটি ভাল বিকল্প ব্যাক আপ এবং আপনার খালি বিশ্বাস ~/.ssh/known_hosts ফাইল, ম্যানুয়ালি এসএসএইচ সংযোগ সঞ্চালন, আইপি ঠিকানা এবং ফিঙ্গারপ্রিন্ট যাচাই, mv ~/.ssh/known_hosts ~/bitbucket_hosts, তারপর বিষয়বস্তু ব্যবহার করুন ~/bitbucket_hostsআপনার স্ক্রিপ্টে স্বয়ংক্রিয়ভাবে জ্ঞাত আঙ্গুলের ছাপগুলি পরিচিত_হস্টস ফাইলটিতে জুড়তে (মূল পুনরুদ্ধার করতে ভুলবেন না ~/.ssh/known_hosts)।

এই ধাপটি শুধুমাত্র একবার (কোনও মেশিনে, আমি বিশ্বাস করি) সঞ্চালিত করতে হবে এবং একবার আপনার আঙ্গুলের ছাপ থাকবে, আপনি এটি আপনার অটোমেশন স্ক্রিপ্টে অন্তর্ভুক্ত করতে পারেন।


7
2018-04-07 18:53





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

সাবধানতার সাথে এগিয়ে যান.

যদি আপনার তারের জুড়ে কোডটির উত্স সম্পর্কে কোনও ভয় না থাকে তবে ক্লোনিং করার সময় আপনাকে স্পষ্টভাবে এবং বিশেষভাবে git: // প্রোটোকলটি ব্যবহার করতে হবে - এটি প্রমাণীকরণহীন এবং পরিষ্কার পাঠ্য।


6
2018-01-22 22:34



আমি নিশ্চিতভাবে ব্যবহার ক্ষেত্রে দেখতে পারেন যেখানে আমরা অ ইন্টারেক্টিভ ব্যবহার প্রয়োগ করতে হবে git clone... এবং এর অর্থ আমাদের কোনও চেক গ্রহণ করার প্রয়োজন নেই (বিশেষ করে আঙ্গুলের ছাপ)। আমার ক্ষেত্রে, আমি এই জিনিস স্বয়ংক্রিয়ভাবে ব্যর্থ হতে পুরোপুরি আনন্দিত হবে। - vaab


জেফ হল বলেছিলেন, এটি করা বিপজ্জনক কারণ এটি অচেনা মানুষ-মধ্য-মধ্য আক্রমণের অনুমতি দেয়। যাইহোক, আপনি ব্যবহার করতে পারেন StrictHostKeyChecking no হোস্ট কী পরীক্ষা নিষ্ক্রিয় করতে ssh বিকল্প। যাইহোক, আমি যদি আপনি ছিল যে বিকল্প সঙ্গে খুব সতর্ক থাকুন।


5
2018-02-03 07:45



এটা মানুষের মধ্যে মধ্যম অধিকার অনুমতি দেয়? - autra


কী যোগ করা হচ্ছে .ssh/known_hosts করতে সঠিক জিনিস বলে মনে হচ্ছে।

যদিও আপনি যখন টাস্কটি স্বয়ংক্রিয়ভাবে করেন তখন আপনি কী নিশ্চিত করতে চান যে কীটি ইতিমধ্যে অন্তর্ভুক্ত নয় এবং প্রতিটিতে যোগ করা হয়েছে clone/pull কাজ.

এই স্নিপেটটি যদি ইতিমধ্যে পাওয়া না থাকে তবে শুধুমাত্র ফিঙ্গারপ্রিন্ট যুক্ত করবে:

if [ ! -n "$(grep "^bitbucket.org " ~/.ssh/known_hosts)" ]; then ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null; fi

4
2018-02-16 10:42



এই নিখুঁত ছিল। সহজেই একটি স্থাপনার স্ক্রিপ্টে রাখা যেতে পারে এবং হোস্ট যাচাইকরণ নিষ্ক্রিয় করার চেয়ে নিরাপদ। এখানে গিথুবের জন্য এক-লাইনার রয়েছে: if [ ! -n "$(grep "^github.com " ~/.ssh/known_hosts)" ]; then ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null; fi; ssh-agent bash -c "ssh-add /path/to/your/deploy/id_rsa; git clone -b master git@github.com:githubAccount/githubRepo.git /your/target/dir - tweak2
এই কাজ করে না যখন HashKnownHosts সক্রিয় করা হয় জন্য / etc / SSH / ssh_config (অথবা ~ / .Ssh / কনফিগ)। পরিবর্তে [ ! -n "$(grep "^bitbucket.org " ~/.ssh/known_hosts)" ] এটা ব্যবহার করা ভাল হবে [ ! "$(ssh-keygen -F bitbucket.org)" ], যা উভয় হ্যাশে এবং অ-হ্যাশ লাইন খুঁজে পায় known_hosts। - Claus Conrad