স্ক্রিপ্টে গিট ক্লোনকে কীভাবে ব্যবহারকারীর নাম / পাসওয়ার্ড দিতে হয়, তবে .git / কনফিগারেশনে শংসাপত্রগুলি সংরক্ষণ করে না


31

আমি এই জাতীয় স্ক্রিপ্টে গিট সংগ্রহস্থলটির ক্লোনিং করছি:

git clone https://user:password@host.com/name/.git

এটি কাজ করে তবে আমার ব্যবহারকারীর নাম এবং আমার পাসওয়ার্ড! এখন মূল URL- এ সংরক্ষণ করা হয় .git/config।

আমি কীভাবে এটি প্রতিরোধ করতে পারি, তবে এখনও এটি কোনও স্ক্রিপ্টে করতে পারি (সুতরাং কোনও ম্যানুয়াল পাসওয়ার্ড ইনপুট নেই)?


আপনি সম্ভবত পরে এর উত্স আপডেট করতে পারেন:git remote set-url origin https://host.com/name/.git
— ceejayoz

@ceejayoz হ্যাঁ, সম্ভব। আইডিয়া জন্য ধন্যবাদ। আমি এখনও একটি সমাধানের জন্য আশা করছি, এটি শংসাপত্রগুলিও অস্থায়ীভাবে সংরক্ষণ করে না।
— নাথান

4
অবশ্যই - একটি কী দিয়ে এসএসএইচ-ভিত্তিক লেখক ব্যবহার করুন।
— সেজেজোজ

2
এসএসএইচের পরিবর্তে আপনি https ব্যবহার করার কোনও কারণ আছে? এসএসএইচ কী সমর্থন করে।
— mzhaase

আমি প্রশ্নটি বুঝতে পেরেছি, তবে স্ক্রিপ্টের মধ্যে পাসওয়ার্ড সংরক্ষণ করার কারণে আপনি কেন ভাল আছেন? এটাও সমান খারাপ।
— মার্টিজন আদালত

উত্তর:


20

আমি যে পদ্ধতিটি ব্যবহার করি তা হ'ল আসলে git pullক্লোনটির পরিবর্তে একটি ব্যবহার করা । স্ক্রিপ্টটি দেখতে এমন হবে:

mkdir repo
cd repo
git init
git config user.email "email"
git config user.name "user"
git pull https://user:password@github.com/name/repo.git master

এটি আপনার ব্যবহারকারীর নাম বা পাসওয়ার্ড সংরক্ষণ করবে না .git/config। তবে, অন্যান্য পদক্ষেপ গ্রহণ না করা প্লেসেক্সট ব্যবহারকারীর নাম এবং পাসওয়ার্ড দৃশ্যমান হবে যখন প্রসেসটি বর্তমান প্রক্রিয়াগুলি দেখায় (যেমন ps) কমান্ডগুলি থেকে চলছে ।

আরও একটি পরামর্শ আমি করব (যদি আপনি ssh ব্যবহার করতে না পারেন) হ'ল প্রকৃতপক্ষে প্লেইনেক্সট ব্যবহারকারীর নাম / পাসওয়ার্ডের পরিবর্তে একটি OAuth টোকেন ব্যবহার করা কারণ এটি কিছুটা বেশি সুরক্ষিত। আপনি আপনার প্রোফাইল সেটিংস থেকে একটি ওআউথ টোকেন তৈরি করতে পারেন: https://github.com/settings/tokens ।

তারপরে সেই টোকেনটি ব্যবহার করে পুল কমান্ডটি হবে

git pull https://$OAUTH_TOKEN:x-oauth-basic@github.com/name/repo.git master

অসাধুভাবে আমি প্রবন্ধ টোকেন ব্যবহার করতে পারি না। আমি গিথুব নয় তবে একটি ব্যক্তিগত সার্ভার ব্যবহার করছি।
— নাথন

3
এছাড়াও লক্ষ্য করা উচিত যে ইউজার নেম এবং পাসওয়ার্ডটি দৃশ্যমান হবে, উদাহরণস্বরূপ, psটান চলার সময় (কমপক্ষে আপনি ব্যবহারকারীদের একে অপরের প্রক্রিয়া দেখতে বাধা না
— দিলে

শপথ ব্যবহারের জন্য পয়েন্টস। প্রযোজনা / মঞ্চায়ন / দেবের ক্ষেত্রে আমার ঠিক এটি দরকার।
— রোবটহমানস

আপনাকে এক মিলিয়ন ধন্যবাদ বন্ধু নষ্ট ঘন্টা n ঘন্টা n অবশেষে আপনার উত্তর পুনরায় শুরু হয়েছে। :
— থাম্বসআপ

17

আইএমও সর্বোত্তম সমাধান হ'ল একটি কাস্টম GIT_ASKPASSসহায়ক ব্যবহার করা এবং পাসওয়ার্ডটিকে অন্য পরিবেশের পরিবর্তনশীল হিসাবে সরবরাহ করা। সুতরাং উদাহরণস্বরূপ, একটি ফাইল তৈরি করুন git-askpass-helper.sh:

#!/bin/sh
exec echo "$GIT_PASSWORD"

এবং তারপরে git clone https://username@hostname/repoএনভায়রনমেন্ট ভেরিয়েবল GIT_ASKPASS=/path/to/git-askpass-helper.shএবং GIT_PASSWORD=nuclearlaunchcodes।

এটির সুবিধা রয়েছে যে প্রক্রিয়া তালিকায়ও পাসওয়ার্ডটি দৃশ্যমান হবে না।


সৃজনশীল সমাধানের জন্য +1। এটি git pullসমাধানের চেয়ে কিছুটা বেশি সুরক্ষিত হবে এবং আপনার পছন্দের স্বয়ংক্রিয় মোতায়েনের সরঞ্জামে আপনাকে প্লেটেক্সট পাসওয়ার্ডটি গোপন হিসাবে সংরক্ষণ করতে দেয় allow
— এফগ্রিগ

13

আপনি আপনার ~/.netrcফাইলে আপনার সংযোগের জমা দিতে পারেন। এর লাইন ধরে কিছু:

machine host.example.net
login bart
password eatmyshorts

কেবলমাত্র সেই ফাইলটি 600 এ ছোড করার বিষয়টি নিশ্চিত করুন you're আপনি যদি উইন্ডোজ ব্যবহার করেন তবে নীচের লিঙ্কটি কার্যকর হতে পারে: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- উইন্ডোজ টু সংরক্ষণ ব্যবহারকারী-এবং-পাসওয়ার্ড

ব্যক্তিগতভাবে, আমার লেখার উদ্দেশ্যে (যদি আপনাকে অনুমতি দেওয়া হয় তবে অবশ্যই) এসএসএইচ কীগুলি ব্যবহার করার প্রবণতা রয়েছে।


ঠিক আছে, এটি আমার পাসওয়ার্ডটি ~ / .netrc এর মধ্যে রেখে দেবে। আমিও তা চাই না।
— নাথান

2

কয়েক ডজন এসও পোস্ট, ব্লগ ইত্যাদির উপরে যাওয়ার পরে আমি প্রতিটি পদ্ধতি চেষ্টা করেছিলাম এবং এটিই আমি সামনে এসেছি। এটি সমস্ত কিছু জুড়ে।

দেখুন গীত শংসাপত্রের & ব্যক্তিগত প্যাকেজের Cheatsheet

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

  • এসএসএইচ পাবলিক কী
    • SSH_ASKPASS
  • এপিআই অ্যাক্সেস টোকেন
    • GIT_ASKPASS
    • পরিবর্তে .gitconfig
    • .gitconfig [শংসাপত্র]
    • .git-পরিচয়পত্র
    • .netrc
  • বোনাস: ব্যক্তিগত প্যাকেজগুলির সাথে কাজ করে
    • নোড / এনপিএম প্যাকেজ.জসন
    • পাইথন / পিপ / ডিম প্রয়োজনীয়তা। txt
    • রুবি রত্ন রত্ন
    • গোলং Go.mod

কোনও প্লেটেক্সট স্টোরেজ না থাকার জন্য সেরা বিকল্প

এখানে এসএসএইচ কীগুলি যা জিজ্ঞাসা করা হয়েছে তা থেকে GIT_ASKPASS, বা git credential storeওএস কীচেন ম্যানেজার ব্যবহার করা সেরা পছন্দ হতে পারে।

যেহেতু GIT_ASKPASS সম্ভবত 3 টির মধ্যে কমপক্ষে বোঝা গেছে, তাই আমি এখানে বিশদটি করব - এবং অন্যরা চিটশিটে রয়েছেন।

GIT_ASKPASS

কীভাবে GIT_ASKPASSস্ক্রিপ্ট তৈরি করবেন :

echo 'echo $MY_GIT_TOKEN' > $HOME/.git-askpass

এটি কিভাবে ব্যবহার করতে:

export MY_GIT_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export GIT_ASKPASS=$HOME/.git-askpass
git clone https://token@code.example.com/project.git

স্ক্রিপ্টটি আকারে স্টিডিন গ্রহণ করে:

Password for 'scheme://host.tld':

স্ক্রিপ্টটি যেমন গিট এনএনভিগুলি প্রাপ্ত করে:

GIT_DIR=/Users/me/project/.git
GIT_EXEC_PATH=/usr/local/Cellar/git/2.19.0_1/libexec/git-core
GIT_PREFIX=

চিটশিটে আরও বিশদ ।

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