স্ক্রিপ্টে গিট ক্লোনকে কীভাবে ব্যবহারকারীর নাম / পাসওয়ার্ড দিতে হয়, তবে .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.