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
সম্পর্কিত:
- কীভাবে আপনার GitHub https পাসওয়ার্ডটি একটি টার্মিনাল কীচিনে লিনাক্সে সংরক্ষণ করবেন?
- জিট আমাকে আমার গিটহুবার ব্যবহারকারীর নাম এবং পাসওয়ার্ড সম্পর্কে জিজ্ঞাসা না করেই কিভাবে নিশ্চিত করে?
- গিট ক্লায়েন্ট কনফিগার করুন, উইন্ডোজের জন্য GitHub এর মতো, প্রমাণীকরণের জন্য জিজ্ঞাসা করবেন না
- একটি গিটহাব রেপোতে একটি স্থানীয় রেপোকে ধাক্কা দেয় যা দ্বৈত-ফ্যাক্টর প্রমাণীকরণ করে
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
, যা আপনার জিপিজি কী সম্পর্কিত আপনার পাসফ্রেজটি স্মরণ করবে।)
gpg4Win Lite
ইনস্টল করুন, ন্যূনতম gnupg কমান্ড-লাইন ইন্টারফেস ( অতি সাম্প্রতিকgpg4win-vanilla-2.XY-betaZZ.exe
), এবং আপনারgpg4win-vanilla-2.XY-betaZZ.exe
জিপিজি ইনস্টলেশন নির্দেশিকাটি সম্পূর্ণ করুন:set PATH=%PATH%:C:\path\to\gpg copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.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