GitHub এ https:// ব্যবহার করার সময় পাসওয়ার্ড টাইপিং এড়িয়ে যাওয়ার উপায় আছে কি?




authentication (16)

আমি সম্প্রতি আমার রিপোজিটরিগুলিকে GitHub (ফায়ারওয়াল সমস্যাগুলির কারণে) -এ https: // এ সিঙ্ক্রোনাইজ করার জন্য স্যুইচ করেছি, এবং এটি প্রতিবার একটি পাসওয়ার্ড চাওয়া হয়। এটি ছিল যে আমি একটি SSH সার্টিফিকেট ছিল, এবং এটি যথেষ্ট ছিল। আমার ক্ষেত্রে পাসওয়ার্ডটি বাইপাস করার উপায় আছে (http / https ব্যবহার করে)?


OAuth এর

আপনি নিজের ব্যক্তিগত ব্যক্তিগত API টোকেন ( OAuth ) তৈরি করতে পারেন এবং এটি ব্যবহার করতে পারেন যেভাবে আপনি আপনার স্বাভাবিক শংসাপত্রগুলি ব্যবহার করবেন (এগুলিতে: /settings/tokens )। উদাহরণ স্বরূপ:

git remote add fork https://[email protected]/foo/bar
git push fork

.netrc

আরেকটি পদ্ধতি হল আপনার ব্যবহারকারী / পাসওয়ার্ডটি ~/.netrc (উইন্ডোজের _netrc ), যেমন

machine github.com
login USERNAME
password PASSWORD

HTTPS এর জন্য:

machine github.com
login USERNAME
password PASSWORD
protocol https

একটি শংসাপত্র সহায়ক

HTTPS ব্যবহার করার সময় Git এ আপনার GitHub পাসওয়ার্ড ক্যাশে করতে, আপনি GitHub এ যেকোনো সময় আপনার GitHub ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি মনে রাখার জন্য Git কে বলার জন্য একটি শংসাপত্র সহায়ক ব্যবহার করতে পারেন।

  • ম্যাক: git config --global credential.helper osxkeychain ( osxkeychain helper প্রয়োজন)
  • উইন্ডোজ: git config --global credential.helper wincred
  • লিনাক্স এবং অন্যান্য: git config --global credential.helper cache

সম্পর্কিত:


TLDR; গিট 1.8.3+ এর সাথে এনক্রিপ্টকৃত নেটআরসি ফাইলটি ব্যবহার করুন।

একটি জিট রিপোজিটরি HTTPS URL- এর জন্য একটি পাসওয়ার্ড সংরক্ষণ করা একটি ~/.netrc (ইউনিক্স) বা %HOME%/_netrc ( _ নোট করুন) এর সাথে সম্ভব।

কিন্তু : সেই ফাইলটি আপনার পাসওয়ার্ডটিকে প্লেইন টেক্সটে সংরক্ষণ করবে।

সমাধান : GPG (GNU গোপনীয়তা গার্ড) দিয়ে যে ফাইলটি এনক্রিপ্ট করুন, এবং প্রত্যেকবার এটি একটি পাসওয়ার্ডের প্রয়োজন হলে (Git / pull / fetch / clone অপারেশনের জন্য) গিটকে ডিক্রিপ্ট করুন।

দ্রষ্টব্য: জিটি 2.18 (Q2 2018) দিয়ে, আপনি এখন এনক্রিপ্ট করা .netrc ফাইলটি ডিক্রিপ্ট করতে ব্যবহৃত GPG কাস্টমাইজ করতে পারেন।

দেখুন 786ef50 , f07eeed (12 মে 2018) লুই মার্সানো (``) দ্বারা কমিট করুন
( জুনিয়ো সি হামানো - gitster - 017b7c5 , 30 মে 2018)

git-credential-netrc : gpg বিকল্পটি গ্রহণ করুন

gpg git-credential-netrc gpg.program বিকল্পটি নির্বিশেষে ' gpg ' এর সাথে ডিক্রিপ্ট করার জন্য git-credential-netrc হয়েছিল।
এটি ডেবিয়ানের মতো বিতরণের একটি সমস্যা যা আধুনিক GnuPG কে অন্য কিছু বলে, যেমন ' gpg2 '

উইন্ডোজ জন্য ধাপে ধাপে নির্দেশাবলী

উইন্ডোজ সহ:

(Git এর বিতরণে একটি gpg.exe রয়েছে, তবে একটি সম্পূর্ণ জিপিজি ইনস্টলেশন ব্যবহার করে একটি gpg-agent.exe , যা আপনার জিপিজি কী সম্পর্কিত আপনার পাসফ্রেজটি স্মরণ করবে।)

(' copy ' কমান্ডটি লক্ষ্য করুন: gpg ' gpg ' কমান্ডটি চালানোর জন্য gpg4win-vanilla-2 একটি ব্যাশ স্ক্রিপ্টের প্রয়োজন হবে। যেহেতু gpg4win-vanilla-2 gpg2.exe দিয়ে আসে, তাই আপনাকে এটি সদৃশ করতে হবে।)

  • একটি জিপিজি কী তৈরি বা আমদানি করুন, এবং এতে বিশ্বাস করুন:

    gpgp --import aKey
    # or
    gpg --gen-key

(যে কী একটি পাসফ্রেজ করা নিশ্চিত করুন।)

  • যে বিশ্বাস

  • আপনার %PATH% মধ্যে একটি ডিরেক্টরির মধ্যে শংসাপত্র সহায়ক স্ক্রিপ্ট ইনস্টল করুন:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc

(হ্যাঁ, এটি একটি বাশ স্ক্রিপ্ট, তবে এটি উইন্ডোতে কাজ করবে কারণ এটি গিট দ্বারা বলা হবে।)

  • পরিষ্কার টেক্সট একটি _netrc ফাইল করুন

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https

(আপনি যে URL টি ব্যবহার করবেন তার উপর নির্ভর করে ' protocol ' অংশটি ' http ' বা ' https ' ভুলবেন না।)

  • ফাইলটি এনক্রিপ্ট করুন:

    gpg -e -r a_recipient _netrc

(আপনি এখন _netrc ফাইলটি মুছে ফেলতে পারেন, শুধুমাত্র _netrc.gpg এনক্রিপ্ট করা এক।)

  • যে এনক্রিপ্ট ফাইল ব্যবহার করুন:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"

(' / ': C:\path\to... মনে রাখবেন C:\path\to... সব কাজ করবে না।) (আপনি কীভাবে -v -d তা দেখতে প্রথম -v -d ব্যবহার করতে পারেন।)

এখন থেকে, HTTP (S) URL ব্যবহার করে যে কোনও Git কমান্ড যা প্রমাণীকরণের প্রয়োজন হয় সেটি _netrc.gpg ফাইলটি ডিক্রিপ্ট করবে এবং আপনি যে সার্ভারের সাথে যোগাযোগ করছেন তার সাথে লগইন / পাসওয়ার্ড ব্যবহার করুন। প্রথমবার, জিপিজি ফাইলটি ডিক্রিপ্ট করার জন্য আপনার জিপিজি কী এর পাসফ্রেজ জিজ্ঞাসা করবে। অন্য সময়, প্রথম জিপিজি কল দ্বারা স্বয়ংক্রিয়ভাবে জিপিজি-এজেন্ট চালু হয় আপনার জন্য সেই পাসফ্রেজ প্রদান করবে।

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


আপনি repo ক্লোন করার পরে, আপনি repo/.git/config সম্পাদনা করতে পারেন এবং নীচের মতো কিছু কনফিগারেশন যোগ করতে পারেন:

[user]
    name = you_name
    password = you_password
[credential]
    helper = store

তারপর আপনি আবার username এবং password জিজ্ঞাসা করা হবে না।


আপনি bashrc ফাইলটি সম্পাদনা করেন এবং এতে একটি স্ক্রিপ্ট যোগ করেন।

যখন আপনি Git শুরু করবেন তখন আপনার পাসওয়ার্ডটি একবার জিজ্ঞাসা করবে এবং তারপরে আপনি লগ আউট না হওয়া পর্যন্ত এটি মনে রাখবেন।

SSH_ENV=$HOME/.ssh/environment
  
# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}
  
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
   ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
      start_agent;
  }
else
    start_agent;
fi

আপনি যদি আপনার পাসওয়ার্ডটিকে সাধারণ পাঠ্যতে সংরক্ষণ করতে না চান তবে মার্ক বলেছিলেন, আপনি ধাক্কা দেওয়ার জন্য আপনার চেয়ে অন্য কোনও GitHub URL ব্যবহার করতে পারেন। আপনার কনফিগারেশন ফাইলে [remote "origin"] অধীনে:

url = git://github.com/you/projectName.git
pushurl = [email protected]:you/projectName.git

আপনি যখন ধাক্কা দিবেন তখন এটি এখনও একটি পাসওয়ার্ড চাওয়া হবে, তবে অন্তত উত্স উত্স প্রকল্পের জন্য আপনি যখন এটি আনবেন না তখন।


আপনি শংসাপত্র সাহায্যকারী ব্যবহার করতে পারেন।

git config --global credential.helper 'cache --timeout=x'

যেখানে x সেকেন্ডের সংখ্যা।


আমি gitcredentials (7) ম্যানুয়াল পাতা থেকে আমার উত্তর পেয়েছিলাম। আমার ক্ষেত্রে, আমার উইন্ডোজ ইন্সটলেশনে ক credential-cache নেই; আমি প্রমাণপত্রাদি দোকান ব্যবহার।

আমি ক্রেডেনশিয়াল-স্টোর ব্যবহার করার পরে, ব্যবহারকারীর নাম / পাসওয়ার্ড [ব্যবহারকারী ফোল্ডার] /। Git-credentials ফাইলে সংরক্ষণ করা হয়। ব্যবহারকারীর নাম / পাসওয়ার্ড মুছে ফেলার জন্য, ফাইলের বিষয়বস্তু মুছে দিন।


আমি জানি এটি একটি নিরাপদ সমাধান নয়, তবে কখনও কখনও আপনাকে অন্য কোনও সংস্থান ছাড়াই কেবল একটি সহজ সমাধান দরকার। এবং যেহেতু সহায়ক = দোকান আমার জন্য কাজ করে না, আমি একটি ডামি সহায়ক তৈরি:

আপনার ব্যবহারকারীদের bin ফোল্ডারে এটি একটি স্ক্রিপ্ট তৈরি করুন, এখানে ক্রেডিটফ্যাক নাম দেওয়া হয়েছে , এই স্ক্রিপ্টটি আপনার ব্যবহারকারী নাম এবং আপনার পাসওয়ার্ড সরবরাহ করবে:

#!/bin/bash
while read line
do
  echo "$line"
done < "/dev/stdin"
echo username=mahuser
echo password=MahSecret12345

এটি এক্সিকিউটেবল করা:

chmod u+x /home/mahuser/bin/credfake

তারপর git মধ্যে কনফিগার করুন:

git config --global credential.helper /home/mahuser/bin/credfake

(অথবা শুধুমাত্র একটি রেপোর জন্য গ্লোবাল ছাড়া এটি ব্যবহার করুন)

এবং - voila - git এই ব্যবহারকারী + পাসওয়ার্ড ব্যবহার করা হবে।


একটি HTTPS URL- এ ব্যবহারকারীর শংসাপত্রগুলি সংরক্ষণ করার জন্য একটি সহজ, পুরানো-শৈল্পিক উপায় রয়েছে:

https://user:[email protected]/...

আপনি git remote set-url <remote-repo> <URL> সাথে URL পরিবর্তন করতে পারেন

সেই পদ্ধতির সুস্পষ্ট দিকটি হল আপনাকে প্লেইন পাঠ্যটিতে পাসওয়ার্ড সংরক্ষণ করতে হবে। আপনি এখনও ব্যবহারকারীর নামটি প্রবেশ করতে পারেন ( https://[email protected]/... ) যা কমপক্ষে আপনার অর্ধেক https://[email protected]/... সংরক্ষণ করবে।

আপনি SSH এ স্যুইচ করতে বা GitHub ক্লায়েন্ট সফ্টওয়্যার ব্যবহার করতে পছন্দ করতে পারেন।


একটি জিএনইউ / লিনাক্স সেটআপে, একটি ~ / .netrc খুব ভাল কাজ করে:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

এটি HTTPS ট্রান্সপোর্টের জন্য কোন নেটওয়ার্ক লাইব্রেরি গিট ব্যবহার করছে তার উপর নির্ভর করে।


এটা আমার কাছে অবিলম্বে স্পষ্ট ছিল না যে প্রথমে আমাকে সাহায্যকারী ডাউনলোড করতে হবে! আমি confluence.atlassian.com/display/STASH/… ক্রেডেনশিয়ালএলপার ডাউনলোডটি খুঁজে পেয়েছি।

উক্তি:

আপনি যদি OS X- এ প্রমাণীকরণ ক্যাশিং সহ Git ব্যবহার করতে চান তবে এই পদক্ষেপগুলি অনুসরণ করুন:

বাইনারি গিট-শংসাপত্র-osxkeychain ডাউনলোড করুন।

বাইনারি কার্যকর করার জন্য নিচের কমান্ডটি চালান:

chmod a+x git-credential-osxkeychain

ডিরেক্টরি /usr/local/bin মধ্যে এটি রাখুন।

নিচের কমান্ডটি চালান:

git config --global credential.helper osxkeychain

এটি আমার জন্য কাজ করে আমি উইন্ডোজ 10 ব্যবহার করছি

git config --global credential.helper wincred

কেবল URL এর অংশ হিসাবে লগইন শংসাপত্রগুলি অন্তর্ভুক্ত করুন:

git remote rm origin 
git remote add origin https://username:[email protected]/path/to/repo.git

নিরাপত্তার জন্য শংসাপত্র ব্যবহার করা ভাল, তবে আপনি ক্যাশে ব্যবহার করে এটি কিছু সময়ের জন্য রাখতে পারেন:

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

আপনার শংসাপত্র 3600 সেকেন্ডের জন্য সংরক্ষিত হবে।


সাধারণত আপনি এই মত একটি রিমোট URL আছে,

git remote -v

origin    https://gitlab.com/username/Repo.git (fetch)
origin    https://gitlab.com/username/Repo.git (push)

git push ব্যবহার করার সময় আপনি ব্যবহারকারী নাম এবং পাসওয়ার্ড এড়িয়ে যেতে চান, এটি চেষ্টা করুন:

 git remote set-url origin https://username:[email protected]/username/Repo.git

আমি মূল্যে একই URL (পাসওয়ার্ড সহ ব্যবহারকারীর বিবরণ সহ) যুক্ত করেছি।

দ্রষ্টব্য: ব্যবহারকারীর নাম ইমেইল যদি এটি কাজ করে না।

git remote -v

origin    https://username:[email protected]/username/Repo.git (fetch)
origin    https://username:[email protected]/username/Repo.git (push)

একটি শংসাপত্র দোকান ব্যবহার করুন।

জিএস 2.11+ এর জন্য ওএস এক্স এবং লিনাক্সে জিট এর অন্তর্নির্মিত প্রমাণপত্রাদি স্টোর ব্যবহার করুন :

git config --global credential.helper libsecret

উইন্ডোজ এ 1.7.9+ এর msysgit জন্য:

git config --global credential.helper wincred

জিএস 1.7.9+ এর জন্য ওএস এক্স ব্যবহার করুন:

git config --global credential.helper osxkeychain




github