Πώς να διορθώσετε το Git που ζητά πάντα διαπιστευτήρια χρήστη για έλεγχο ταυτότητας HTTP(S)


Για να αποκτήσετε πρόσβαση ή να εργαστείτε με έναν απομακρυσμένο χώρο αποθήκευσης Git, μπορείτε να χρησιμοποιήσετε πρωτόκολλα SSH ή HTTP(S). Με το πρώτο, όταν πρόκειται για ιδιωτικά αποθετήρια, μπορείτε απλά να διαμορφώσετε κλειδιά SSH χωρίς φράση πρόσβασης που σας επιτρέπει να μεταφέρετε με ασφάλεια δεδομένα χωρίς να πληκτρολογείτε το όνομα χρήστη και τον κωδικό πρόσβασής σας.

Ωστόσο, με το HTTP(S), κάθε σύνδεση θα σας ζητά να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας (όταν το Git χρειάζεται έλεγχο ταυτότητας για ένα συγκεκριμένο πλαίσιο διεύθυνσης URL) – οι χρήστες του Github το γνωρίζουν καλά αυτό.

Σε αυτό το άρθρο, θα σας δείξουμε πώς να διορθώσετε το Git ζητώντας πάντα διαπιστευτήρια χρήστη για πρόσβαση μέσω HTTP(S). Θα εξηγήσουμε διαφορετικούς τρόπους αποτροπής του Git από το να ζητά επανειλημμένα όνομα χρήστη και κωδικό πρόσβασης κατά την αλληλεπίδραση με ένα απομακρυσμένο χώρο αποθήκευσης μέσω HTTP(S).

Πώς να εγκαταστήσετε το Git στο Linux

Εάν δεν έχετε εγκατεστημένο το πακέτο Git στο σύστημά σας, εκτελέστε την κατάλληλη εντολή για τη διανομή Linux για να το εγκαταστήσετε (χρησιμοποιήστε την εντολή Sudo όπου χρειάζεται).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

Εισαγωγή ονόματος χρήστη και κωδικού πρόσβασης Git στο Remote URL

Όπως αναφέραμε νωρίτερα, κατά την κλωνοποίηση ενός απομακρυσμένου αποθετηρίου Git μέσω HTTP(S), κάθε σύνδεση χρειάζεται ένα όνομα χρήστη και κωδικό πρόσβασης όπως φαίνεται.

Για να αποτρέψετε το Git να ζητά το όνομα χρήστη και τον κωδικό πρόσβασης σας, μπορείτε να εισαγάγετε τα διαπιστευτήρια σύνδεσης στη διεύθυνση URL όπως φαίνεται.


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

Το κύριο μειονέκτημα αυτής της μεθόδου είναι ότι το όνομα χρήστη και ο κωδικός πρόσβασης σας θα αποθηκευτούν στην εντολή στο αρχείο ιστορικού κελύφους.

καθώς και στο αρχείο .git/config κάτω από τον τοπικό φάκελο, το οποίο ενέχει κίνδυνο ασφαλείας.

cat .git/config

Σημείωση: Για χρήστες Github που έχουν ενεργοποιήσει τον έλεγχο ταυτότητας δύο παραγόντων ή έχουν πρόσβαση σε έναν οργανισμό που χρησιμοποιεί SAML μοναδική σύνδεση, πρέπει να δημιουργήστε και χρησιμοποιήστε ένα προσωπικό διακριτικό πρόσβασης αντί να εισαγάγετε τον κωδικό πρόσβασής σας για το HTTPS Git (όπως φαίνεται στα δείγματα εξόδων σε αυτόν τον οδηγό). Για να δημιουργήσετε ένα προσωπικό διακριτικό πρόσβασης, στο Github, μεταβείτε στις Ρυθμίσεις => Ρυθμίσεις προγραμματιστή => Προσωπικά διακριτικά πρόσβασης.

Αποθήκευση ονόματος χρήστη και κωδικού πρόσβασης στο Remote Git Repository στο δίσκο

Η δεύτερη μέθοδος είναι να χρησιμοποιήσετε τη βοήθεια διαπιστευτηρίων Git για να αποθηκεύσετε το όνομα χρήστη και τον κωδικό πρόσβασής σας σε ένα απλό αρχείο στο δίσκο, όπως φαίνεται.

git config credential.helper store				
OR
git config --global credential.helper store		

Από εδώ και στο εξής, το Git θα εγγράφει διαπιστευτήρια στο αρχείο ~/.git-credentials για κάθε περιβάλλον διεύθυνσης URL, όταν γίνεται πρόσβαση για πρώτη φορά. Για να προβάλετε το περιεχόμενο αυτού του αρχείου, μπορείτε να χρησιμοποιήσετε την εντολή cat όπως φαίνεται.

cat  ~/.git-credentials

Για επόμενες εντολές για το ίδιο περιβάλλον διεύθυνσης URL, το Git θα διαβάσει τα διαπιστευτήρια χρήστη σας από το παραπάνω αρχείο.

Όπως και η προηγούμενη μέθοδος, αυτός ο τρόπος μεταβίβασης διαπιστευτηρίων χρήστη στο Git είναι επίσης μη ασφαλής, καθώς το αρχείο αποθήκευσης δεν είναι κρυπτογραφημένο και προστατεύεται μόνο από τυπικά δικαιώματα συστήματος αρχείων.

Η τρίτη μέθοδος που εξηγείται παρακάτω, θεωρείται πιο ασφαλής.

Αποθήκευση ονόματος χρήστη και κωδικού πρόσβασης στο Remote Git Repository στη μνήμη

Τελευταίο αλλά εξίσου σημαντικό, μπορείτε επίσης να χρησιμοποιήσετε τον βοηθό διαπιστευτηρίων Git για να αποθηκεύσετε προσωρινά τα διαπιστευτήριά σας στη μνήμη για κάποιο χρονικό διάστημα. Για να το κάνετε αυτό, εκτελέστε την ακόλουθη εντολή.

git config credential.helper cache
OR
git config --global credential.helper cache

Αφού εκτελέσετε την παραπάνω εντολή, όταν προσπαθείτε να αποκτήσετε πρόσβαση σε ένα απομακρυσμένο ιδιωτικό αποθετήριο για πρώτη φορά, το Git θα ζητήσει το όνομα χρήστη και τον κωδικό πρόσβασής σας και θα τα αποθηκεύσει στη μνήμη για κάποιο χρονικό διάστημα.

Ο προεπιλεγμένος χρόνος προσωρινής αποθήκευσης είναι 900 δευτερόλεπτα (ή 15 λεπτά), μετά τον οποίο το Git θα σας ζητήσει να εισαγάγετε ξανά το όνομα χρήστη και τον κωδικό πρόσβασής σας. Μπορείτε να το αλλάξετε ως εξής (1800 δευτερόλεπτα=30 λεπτά ή 3600 δευτερόλεπτα=1 ώρα).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Για περισσότερες πληροφορίες σχετικά με το Git και τους βοηθούς διαπιστευτηρίων, ανατρέξτε στις σελίδες man τους.

man git
man git-credential-cache
man git-credential-store

Ήταν χρήσιμος αυτός ο οδηγός; Ενημερώστε μας μέσω της παρακάτω φόρμας σχολίων. Μπορείτε επίσης να μοιραστείτε τυχόν ερωτήσεις ή σκέψεις σχετικά με αυτό το θέμα.