আমি git push
একটি রিমোট গিট সংগ্রহস্থলের কাজ করি ।
প্রত্যেকে push
আমাকে ইনপুট করতে অনুরোধ করবে username
এবং password
। আমি প্রতিটি ধাক্কার জন্য এড়াতে চাই, কিন্তু এটি এড়াতে কনফিগার কিভাবে?
আমি git push
একটি রিমোট গিট সংগ্রহস্থলের কাজ করি ।
প্রত্যেকে push
আমাকে ইনপুট করতে অনুরোধ করবে username
এবং password
। আমি প্রতিটি ধাক্কার জন্য এড়াতে চাই, কিন্তু এটি এড়াতে কনফিগার কিভাবে?
উত্তর:
Ssh কীগুলি তৈরি করতে টার্মিনালটি খুলুন:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(কেবলমাত্র যদি কমিট প্রোগ্রামটি শংসাপত্র / বেসরকারী এবং সর্বজনীন এসএসএস কীগুলি ব্যবহার করতে সক্ষম হয় তবেই কাজ করে)
উপরের পদক্ষেপগুলির জন্য পুট্টি জেনের উপর একটি ওয়াকথ্রু রয়েছে
আপনার রিমোটটি কীভাবে সেট আপ করা হবে তার উপর নির্ভর করে এই পদক্ষেপটি পরিবর্তিত হয়।
যদি এটি একটি গিটহাব সংগ্রহস্থল এবং আপনার প্রশাসনিক সুযোগসুবিধা থাকে তবে সেটিংসে যান এবং 'এসএসএইচ কী যুক্ত করুন' ক্লিক করুন। ~/.ssh/id_rsa.pub
ক্ষেত্রটিতে 'কী' লেবেলযুক্ত আপনার সামগ্রীগুলি অনুলিপি করুন ।
যদি আপনার সংগ্রহস্থল অন্য কারও দ্বারা পরিচালিত হয় তবে প্রশাসককে আপনার দিন id_rsa.pub
।
আপনার রিমোট রিপোজিটরিটি যদি আপনার দ্বারা পরিচালিত হয় তবে আপনি এই আদেশটি উদাহরণস্বরূপ ব্যবহার করতে পারেন:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
যদি আপনি উপরের পদক্ষেপগুলি করেছেন এবং এখনও পাসওয়ার্ড প্রম্পট পেয়ে থাকেন তবে নিশ্চিত করুন যে আপনার রেপো URL টি ফর্মটিতে রয়েছে
git+ssh://git@github.com/username/reponame.git
উল্টোদিকে
https://github.com/username/reponame.git
আপনার রেপো ইউআরএল দেখতে, চালান:
git remote show origin
আপনি এর সাথে ইউআরএল পরিবর্তন করতে পারেন:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
[1] এই বিভাগটি এরিক পি থেকে উত্তর অন্তর্ভুক্ত করে
git remote set-url origin git@github.com:/username/projectname.git
শংসাপত্রের ক্যাশে সক্ষম করতে নিম্নলিখিত কমান্ডটি চালান।
$ git config credential.helper store
$ git push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>
ব্যবহারে ক্যাশেগের মেয়াদও নির্দিষ্ট করা উচিত ,
git config --global credential.helper 'cache --timeout 7200'
শংসাপত্রের ক্যাশে সক্ষম করার পরে, এটি 7200 সেকেন্ড (2 ঘন্টা) জন্য ক্যাশে হবে ।
দ্রষ্টব্য: শংসাপত্রের সহায়তা সহায়ক স্থানীয় ডিস্কে এনক্রিপ্ট করা পাসওয়ার্ড সংরক্ষণ করে।
git
ম্যানপেজ থেকে : "এই সহায়কটি ব্যবহার করা আপনার পাসওয়ার্ডগুলিকে ডিস্কে এনক্রিপ্ট না করে কেবল ফাইল সিস্টেমের অনুমতি দ্বারা সুরক্ষিত রাখবে" "
store
শংসাপত্রহীন সহায়কটি ডিস্কে পাসওয়ার্ডটি এনক্রিপ্ট না করে সঞ্চয় করার বিষয়ে একটি সতর্কতা হারিয়েছে ।
git config --unset credential.helper
যদি আপনি ইতিমধ্যে আপনার এসএসএইচ কীগুলি সেট আপ করে রেখেছেন এবং এখনও পাসওয়ার্ড প্রম্পট পেয়ে থাকেন তবে নিশ্চিত করুন যে আপনার রেপো ইউআরএল ফর্মটিতে রয়েছে
git+ssh://git@github.com/username/reponame.git
উল্টোদিকে
https://github.com/username/reponame.git
আপনার রেপো ইউআরএল দেখতে, চালান:
git remote show origin
আপনি ইউআরএল এর git remote set-url
মত পরিবর্তন করতে পারেন:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
git init
স্থানীয়ভাবে ব্যবহার করার পরে গিটহাব ওয়েবসাইটে নতুন রেপো থেকে রিমোট যুক্ত করার পরে এই সমস্যাটি স্থির করেছিলাম ।
git@github.com/username/reponame.git
--repo
গিট পুশ কমান্ডের জন্য কেবল বিকল্প ব্যবহার করুন । এটার মত:
$ git push --repo https://name:password@bitbucket.org/name/repo.git
git remote set-url origin https://name:password@github.com/repo.git
name@github.com/....git
কাজের জন্য সেট করা যদি আপনি প্রতিবার পাসওয়ার্ডের জন্য সজ্জিত না হন mind
git push --repo https://github.com/Username/repo
এটি .git
এক্সটেনশন ছাড়াই কাজ করে
আপনি গিট-শংসাপত্রের-স্টোরের মাধ্যমে ব্যবহার করতে পারেন
git config credential.helper store
যা ফাইল সিস্টেমে আপনার পাসওয়ার্ডটি এনক্রিপ্ট না করা সঞ্চয় করে :
এই সহায়কটি ব্যবহার করে আপনার পাসওয়ার্ডগুলি ডিস্কে এনক্রিপ্ট না করা কেবলমাত্র ফাইল সিস্টেম অনুমতি দ্বারা সুরক্ষিত থাকবে। যদি এটি কোনও গ্রহণযোগ্য সুরক্ষা ট্রেড অফ না হয়, গিট-শংসাপত্র-ক্যাশে চেষ্টা করুন বা আপনার অপারেটিং সিস্টেমের সরবরাহিত সুরক্ষিত স্টোরেজের সাথে একীভূতকারী এমন কোনও সহায়িকার সন্ধান করুন।
গিট-শংসাপত্র-ক্যাশে ব্যবহার করুন যা ডিফল্টরূপে পাসওয়ার্ডটি 15 মিনিটের জন্য সঞ্চয় করে।
git config credential.helper cache
আলাদা টাইমআউট সেট করতে, ব্যবহার করুন --timeout
(এখানে 5 মিনিট)
git config credential.helper 'cache --timeout=300'
- আপনি যদি ম্যাক ব্যবহার করছেন তবে গিটটি একটি "অক্সকিচেইন" মোড নিয়ে আসে যা আপনার সিস্টেম অ্যাকাউন্টে সংযুক্ত সুরক্ষিত কীচেইনে শংসাপত্রগুলি ক্যাশে করে। এই পদ্ধতিটি শংসাপত্রগুলি ডিস্কে সঞ্চয় করে এবং এগুলির কখনই মেয়াদ শেষ হয় না তবে তারা একই সিস্টেমের সাথে এনক্রিপ্ট করা হয় যা এইচটিটিপিএস শংসাপত্র এবং সাফারি অটো-ফিলগুলি সঞ্চয় করে। কমান্ড লাইন নিম্নলিখিত চলমান এই বৈশিষ্ট্যটি সক্ষম হবে:
git config --global credential.helper osxkeychain
। কীচেইন অ্যাপ্লিকেশনটি ব্যবহার করে আপনার কীচেইনে শংসাপত্রগুলি সংরক্ষণ করতে হবে।- আপনি যদি উইন্ডোজ ব্যবহার করেন তবে আপনি "উইন্ডোজের জন্য গিট শংসাপত্র ব্যবস্থাপক" নামে একটি সহায়ক ইনস্টল করতে পারেন । এটি উপরে বর্ণিত "অস্কেচেইন" সহায়কটির মতো, তবে সংবেদনশীল তথ্য নিয়ন্ত্রণ করতে উইন্ডোজ শংসাপত্রের স্টোর ব্যবহার করে। এটি https://github.com/Mic Microsoft/Git-Credential-Manager- for- উইন্ডোতে পাওয়া যাবে । [আমার জোর দেওয়া]
credential.helper cache
কাজ করে না। এটা হওয়া উচিত git config --global credential.helper wincred
।
ধাপ 1 -
নীচের কমান্ডটি ব্যবহার করে আপনার লিনাক্স সিস্টেমে এসএসএইচ কী তৈরি করুন
ssh-keygen -t rsa -b 4096 -C "your_email"
এটি পাসফ্রেজ এবং ফাইলের নাম জিজ্ঞাসা করবে (ডিফল্ট হবে ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)
ধাপ ২ -
ফাইলগুলি তৈরি হয়ে গেলে github অ্যাকাউন্ট ssh বিভাগে সর্বজনীন কী id_rsa.pub যুক্ত করুন।
ধাপ 3 -
আপনার মেশিনে নীচের কমান্ডটি ব্যবহার করে ssh-এজেন্টে প্রাইভেট কী id_rsa যুক্ত করুন
ssh-add ~/.ssh/id_rsa
পদক্ষেপ 4 -
এখন নীচের কমান্ডটি ব্যবহার করে আপনার স্থানীয় গিট রেপোতে রিমোট url git@github.com: ব্যবহারকারী_নাম / repo_name.git যুক্ত করুন।
git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git
এটাই.
আপনার ওএস শংসাপত্রের স্টোরটিতে আপনার গিট ক্লায়েন্টকে তার করুন। উইন্ডোজ উদাহরণস্বরূপ আপনি wincred যাও শংসাপত্র সাহায্যকারী বাঁধাই:
git config --global credential.helper wincred
গিটহাবটিতে https: // ব্যবহার করার সময় পাসওয়ার্ড টাইপিং এড়ানোর কোনও উপায় আছে কি?
উইন্ডোজ অপারেটিং সিস্টেমে এর পরিবর্তে এটি ব্যবহার করুন, এটি আমার পক্ষে কাজ করে:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
যেমন
git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git
git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git
git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git
git push origin master
সমাধানটি সম্পর্কে উপরে বেশ কয়েকবার বলা হয়েছে:
git config credential.helper store
এর পরে পাসওয়ার্ডের জন্য যে কোনও কমান্ড ব্যবহার করতে পারেন। আপনাকে ধাক্কা দিতে হবে না। (আপনি উদাহরণস্বরূপ টানতেও পারেন) এর পরে, আপনাকে আবার আপনার ব্যবহারকারীর নাম / পাসওয়ার্ড টাইপ করতে হবে না।
আমি যতদূর জানি, কেবল দুটি নিরাপদ উপায় রয়েছে: কীস্টোর ব্যবহার করে এসএসএস বা পাসডাব্লু এনক্রিপ্ট করা ।
cat ~/.ssh/id_rsa.pub
, এটি এখানে আটকান, নাম দিন এবং সংরক্ষণ করুন (যদি আপনার কাছে এ জাতীয় কোনও ফাইল না থাকে তবে নিজের জন্য একটি তৈরি করুন ssh-keygen -t rsa
- সমস্ত প্রম্পটের জন্য কেবল লিখুন );git remote set-url origin git+ssh://git@github.com/username/reponame.git
- আপনি এটি প্রথমে পরীক্ষা করতে পারেন git remote -v
);touch t; git add t; git commit -m "test"; git push
এবং পাসওয়ার্ড-মুক্ত বিশ্ব উপভোগ করতে হ্যাঁ নিশ্চিত করুন ।আপনি যদি git config --global credential.helper store
অন্যদের উল্লিখিত হিসাবে ব্যবহার করেন তবে আপনার এনক্রিপ্ট করা পাসওয়ার্ডগুলি কেবল একটি সরল পাঠ্যে সংরক্ষণ করা হবে ~/.git-credentials
যার অধীনে এটি সুরক্ষিত নয় বলে মনে হচ্ছে।
এটি হিসাবে এনক্রিপ্ট করার চেষ্টা করুন
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
এই ক্ষেত্রে, আপনি ব্যবহার করছেন
https://git@github.com/username/reponame.git
।
উইন্ডোজে আমার সমাধান:
ssh-keygen -t rsa
(সমস্ত মানের জন্য এন্টার টিপুন)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
যদি আপনার পিসি সুরক্ষিত থাকে বা আপনি পাসওয়ার্ড সুরক্ষার বিষয়ে চিন্তা না করেন তবে এটি খুব সহজভাবে অর্জন করা যেতে পারে। ধরে নিই যে রিমোট সংগ্রহস্থলটি গিটহাব-এ রয়েছে এবং origin
এটি রিমোট রিপোজিটরির স্থানীয় নাম, এই কমান্ডটি ব্যবহার করুন
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
--push
পতাকাটি নিশ্চিত করে যে এটি কেবল git push
কমান্ডের জন্য সংগ্রহস্থলের URL পরিবর্তন করে । (মূল পোস্টে জিজ্ঞাসিত প্রশ্নটি কেবল git push
কমান্ড সম্পর্কে । গিটহাবের পাবলিক রিপোজিটরিগুলির জন্য কেবল পুশ অপারেশনের জন্য একটি ব্যবহারকারীর নাম + পাসওয়ার্ড প্রয়োজন set নোট করুন যে গিটহাবের ব্যক্তিগত সংগ্রহস্থলগুলিতে টানতে এবং আনতে অপারেশনের জন্য একটি ব্যবহারকারীর নাম + পাসওয়ার্ডের প্রয়োজন হবে , সুতরাং একটি ব্যক্তিগত সংগ্রহস্থলের জন্য আপনি ব্যবহার করতে চাইবেন না --push flag
...)
সতর্কতা: এটি সহজাতভাবে অসুরক্ষিত কারণ:
আপনার আইএসপি, বা আপনার নেটওয়ার্ক অ্যাক্সেসে প্রবেশ করা যে কেউ, সহজেই ইউআরএলটিতে সরল পাঠ্যে পাসওয়ার্ডটি দেখতে পারে;
আপনার পিসিতে অ্যাক্সেস অর্জনকারী যে কেউ ব্যবহার করে আপনার পাসওয়ার্ডটি দেখতে পাবে git remote show origin
।
এজন্য একটি এসএসএইচ কী ব্যবহার করা হ'ল গ্রহণযোগ্য উত্তর।
এমনকি একটি এসএসএইচ কী সম্পূর্ণ সুরক্ষিত নয় । আপনার পিসিতে অ্যাক্সেস অর্জনকারী যে কেউ স্থির করতে পারেন, উদাহরণস্বরূপ, আপনার পুস্তকে নষ্ট করে এমন ধাক্কা তৈরি করতে পারে - বা আরও খারাপ - আপনার কোডটিতে সূক্ষ্ম পরিবর্তন করে প্রতিশ্রুতিবদ্ধ। (সমস্ত ধাক্কা দেওয়া প্রতিশ্রুতিগুলি অবশ্যই গিটহাবের উপর অত্যন্ত দৃশ্যমান But তবে কেউ যদি আপনার কোডটি গোপনীয়তার সাথে পরিবর্তন করতে চায় তবে তারা --amend
প্রতিশ্রুতি বার্তাটি পরিবর্তন না করে পূর্বের প্রতিশ্রুতি দিতে পারে এবং জোর করে চাপিয়ে দিতে পারে That এটি চুড়ান্ত এবং বাস্তবে লক্ষ্য করা বেশ কঠিন। )
তবে আপনার পাসওয়ার্ড প্রকাশ করা আরও খারাপ । যদি কোনও আক্রমণকারী আপনার ব্যবহারকারীর নাম + পাসওয়ার্ড সম্পর্কে জ্ঞান অর্জন করে তবে তারা আপনাকে আপনার নিজের অ্যাকাউন্ট থেকে লক আউট করা, আপনার অ্যাকাউন্ট মোছা, স্থায়ীভাবে সংগ্রহস্থল মুছতে পারে ইত্যাদি কাজ করতে পারে etc.
বিকল্পভাবে - সরলতা এবং সুরক্ষার জন্য - আপনি কেবলমাত্র ইউআরএলতে আপনার ব্যবহারকারীর নাম সরবরাহ করতে পারেন , যাতে প্রতিবার আপনার পাসওয়ার্ডটি টাইপ git push
করতে হবে তবে আপনাকে প্রতিবার আপনার ব্যবহারকারীর নাম দিতে হবে না। (আমি এই পদ্ধতির বেশ পছন্দ করি, পাসওয়ার্ড টাইপ করা আমাকে প্রতিবার ভাবার বিরতি দেয় git push
, তাই আমি git push
দুর্ঘটনাক্রমে পারি না ))
git remote set-url --push origin https://<username>@github.com/<repo>
@
, এটি গিট সার্ভারের অংশ হিসাবে @ এর পরে কমান্ড থিংক পাসওয়ার্ড ভঙ্গ করছে?
এই সমস্ত কিছু দেখা দেয় কারণ গিটটি কোনও পাইপের মাধ্যমে শংসাপত্রগুলি প্রেরণের জন্য ক্লোন / পুল / পুশ / আনার আদেশগুলিতে কোনও বিকল্প সরবরাহ করে না। যদিও এটি শংসাপত্র দেয় he হেল্পার, এটি ফাইল সিস্টেমে সঞ্চয় করে বা ডেমোন ইত্যাদি তৈরি করে Often সত্যিই খুব অনিরাপদ।
এখানে আমাকে প্রায় কাজ করতে হয়েছিল। 1. গিট সংস্করণ (গিট - রূপান্তর) 1.8.3 এর চেয়ে বড় বা সমান হওয়া উচিত।
গিট ক্লোন
ক্লোনিংয়ের জন্য, ইউআরএল URL ফর্ম্যাট থেকে পরিবর্তন করার পরে "গিট ক্লোন ইউআরএল" ব্যবহার করুন, http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} to http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
তারপরে পরবর্তী বিভাগের মতো পাসওয়ার্ডের ভাণ্ডার মুছুন।
শুদ্ধিকরণ
এখন, এই যেতে হবে এবং
যদি আপনার অ্যাপ্লিকেশন জাভা ব্যবহার করে এই আদেশগুলি জারি করে, রানটাইমের পরিবর্তে প্রসেসবিল্ডার ব্যবহার করুন। যদি আপনার রানটাইম অবশ্যই ব্যবহার করতে হয়, getRunTime ()। এক্সিকিউটিভ ব্যবহার করুন যা স্ট্রিং অ্যারেটিকে / bin / bash এবং -c এর সাথে আর্গুমেন্ট হিসাবে আর্গুমেন্ট হিসাবে গ্রহণ করে তবে একক স্ট্রিংকে আর্গুমেন্ট হিসাবে গ্রহণ করে।
গিট ফেচ / পুল / পুশ
আপনাকে একটি এসএসএইচ প্রাইভেট কী সেটআপ করতে হবে, আপনি এই পৃষ্ঠাটি পর্যালোচনা করতে পারেন , ম্যাকের জন্য কীভাবে সেটআপ করবেন, আপনি যদি লিনাক্সে থাকেন তবে গাইডটি প্রায় একই রকম হবে, উইন্ডোজটিতে আপনার এমএসওয়াইএসের মতো সরঞ্জামের প্রয়োজন হবে ।