Saya tahu cara memberikan nama pengguna dan kata sandi untuk permintaan HTTPS seperti ini:
git clone https://username:password@remote
Tapi saya ingin tahu cara memberikan nama pengguna dan kata sandi ke remote seperti ini:
git clone [email protected]
Saya sudah mencoba seperti ini:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Tetapi mereka belum bekerja.
Jawaban:
Berdasarkan komentar Michael Scharf:
Anda dapat meninggalkan kata sandi sehingga tidak akan masuk dalam file riwayat Bash Anda:
Ini akan menanyakan kata sandi Anda.
Atau, Anda dapat menggunakan:
Cara ini bekerja untuk saya dari repositori GitHub.
sumber
git clone https://[email protected]/username/repository.git
. git akan bertanya kepada Anda dan itu tidak akan disimpan dalam git / config atau dalam sejarah bash AndaThe
user@host:path/to/repo
Format memberitahu Git untuk penggunaan ssh untuk login kehost
dengan nama penggunauser
. Darigit help clone
:Bagian sebelum
@
adalah nama pengguna, dan metode otentikasi (kata sandi, kunci publik, dll.) Ditentukan oleh ssh, bukan Git. Git tidak memiliki cara untuk mengirimkan kata sandi ke ssh, karena ssh bahkan mungkin tidak menggunakan kata sandi tergantung pada konfigurasi server jarak jauh.Gunakan
ssh-agent
untuk menghindari mengetik kata sandi sepanjang waktuJika Anda tidak ingin mengetikkan kata sandi ssh setiap saat, solusinya adalah membuat pasangan kunci publik / pribadi , memasukkan kunci publik ke
~/.ssh/authorized_keys
file Anda di server jarak jauh, dan memuat kunci privat Anda ke dalamnyassh-agent
. Juga lihat Konfigurasi Git lebih SSH untuk login sekali , halaman bantuan GitHub pada passphrase kunci ssh , gitolite dokumentasi ssh , dan kunci ssh Heroku dokumentasi .Memilih antara beberapa akun di GitHub (atau Heroku atau ...)
Jika Anda memiliki beberapa akun di tempat seperti GitHub atau Heroku, Anda akan memiliki beberapa kunci ssh (setidaknya satu per akun). Untuk memilih akun yang ingin Anda masuki, Anda harus memberi tahu ssh kunci pribadi mana yang akan digunakan .
Misalnya, anggap Anda memiliki dua akun GitHub:
foo
danbar
. Kunci ssh Anda untukfoo
is~/.ssh/foo_github_id
dan kunci ssh Anda untukbar
is~/.ssh/bar_github_id
. Anda ingin mengakses[email protected]:foo/foo.git
denganfoo
akun Anda dan[email protected]:bar/bar.git
denganbar
akun Anda . Anda akan menambahkan yang berikut ini ke~/.ssh/config
:Anda kemudian akan mengkloning dua repositori sebagai berikut:
Menghindari ssh sama sekali
Beberapa layanan menyediakan akses HTTP sebagai alternatif untuk ssh:
GitHub:
Gitorious:
Heroku: Lihat artikel dukungan ini .
PERINGATAN : Menambahkan kata sandi Anda ke URL klon akan menyebabkan Git menyimpan kata sandi plaintext Anda
.git/config
. Untuk menyimpan kata sandi Anda dengan aman saat menggunakan HTTP, gunakan bantuan kredensial. Sebagai contoh:Hal di atas akan menyebabkan Git meminta kata sandi Anda setiap 15 menit sekali (secara default). Lihat
git help credentials
detailnya.sumber
Dalam komentar jawaban @ Bassetassen , @plosco menyebutkan bahwa Anda dapat menggunakannya
git clone https://<token>@github.com/username/repository.git
untuk mengkloning dari GitHub. Saya pikir saya akan memperluas cara melakukan itu, kalau-kalau ada yang menemukan jawaban ini seperti yang saya lakukan ketika mencoba untuk mengotomatisasi beberapa kloning.GitHub memiliki panduan yang sangat berguna tentang cara melakukan ini, tetapi tidak mencakup apa yang harus dilakukan jika Anda ingin memasukkan semuanya dalam satu baris untuk keperluan otomatisasi. Ini memperingatkan bahwa menambahkan token ke URL klon akan menyimpannya dalam plaintext di
.git/config
. Ini jelas merupakan risiko keamanan untuk hampir setiap kasus penggunaan, tetapi karena saya berencana menghapus repo dan mencabut token ketika saya selesai, saya tidak peduli.1. Buat Token
GitHub memiliki seluruh panduan di sini tentang cara mendapatkan token, tapi di sini TL; DR.
2. Mengkloning Repo
Sama seperti perintah yang diberikan @plosco
git clone https://<token>@github.com/<username>/<repository>.git
, ganti saja<token>
,<username>
dan<repository>
dengan info apa pun Anda.Jika Anda ingin mengkloningnya ke folder tertentu, cukup masukkan alamat folder di akhir seperti ini:, di
git clone https://<token>@github.com/<username>/<repository.git> <folder>
mana<folder>
, Anda dapat menebaknya, folder yang ingin dikloning! Anda tentu saja dapat menggunakan.
,..
,~
, dll di sini seperti Anda dapat di tempat lain.3. Tanpa Jejak
Mungkin tidak semua ini diperlukan, tergantung pada seberapa sensitif apa yang Anda lakukan.
rm -rf <folder>
.git remote remove origin
atau hanya menghapus token dengan menjalankangit remote set-url origin https://github.com/<username>/<repository.git>
.Perhatikan bahwa saya bukan pro, jadi di atas mungkin tidak aman dalam arti bahwa tidak ada jejak yang tersisa untuk segala jenis pekerjaan forensik.
sumber
https://<token>@github.com
tidak diterima dengan portal saya, saya harus menggunakanhttps://oauth2:<token>@github.com
Meskipun ada banyak jawaban, saya sendiri menghadapi masalah berulang ketika nama pengguna atau kata sandi memiliki karakter khusus di dalamnya.
URL menyandikan nama pengguna dan kata sandi Anda untuk git, kemudian menggunakannya sebagai bagian dari URL itu sendiri (ketika tidak ada masalah keamanan).
Katakanlah, URL menyandikan nilai nama pengguna
dan URL nilai sandi yang disandikan
Maka URL GIT Clone Anda akan terlihat seperti,
Semoga ini membantu.
Untuk berjaga-jaga, ingin URL menyandikan online: https://www.urlencoder.org/
sumber
Saya memecahkan masalah ini dengan cara berikut:
sumber
Di Windows , langkah-langkah berikut akan memicu kembali jendela masuk GitHub saat
git clone
ing:sumber
Ikuti argumen ini untuk mengganti dengan kasus khusus Anda jika mereka membuat masalah:
! # $ & '() * +, /:; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Jadi misalnya-
URL aktual: https: // usern @ me: p @ ssword @ git / reponame.git
URL solusi yang akan digunakan: https: // usern% 40me: p%40ssword@git/reponame.git
sumber
Jalankan ini dulu sebelum kloning dengan cara yang sama, harus diperbaiki!
sumber
Ini adalah pertanyaan Stack Overflow yang sangat baik, dan jawabannya sangat instruktif, sehingga saya bisa menyelesaikan masalah yang menjengkelkan yang saya temui baru-baru ini.
Organisasi tempat saya bekerja menggunakan
Atlassian's BitBucket
produk (bukan Github), pada dasarnya versi GitHub mereka sehingga repositori dapat diamankan sepenuhnya di lokasi. Saya mengalami masalah yang sama dengan @coordinate, karena kata sandi saya diperlukan untuk repositori baru yang saya periksa. Kredensial saya telah disimpan secara global untuk semuaBitBucket
proyek, jadi saya tidak yakin apa yang menyebabkan hilangnya kredensial.Singkatnya, saya dapat memasukkan perintah GIT berikut ( hanya menyediakan nama pengguna saya), yang kemudian meminta Manajer Kredensial Git untuk meminta saya memasukkan kata sandi, yang kemudian dapat saya simpan.
CATATAN: sub-jalur direktori yang dikurung hanya merujuk ke referensi internal, dan akan berbeda untuk Anda!
sumber
Jika Anda menggunakan
http/https
dan Anda ingin MEMENUHI proses tersebut sepenuhnya tanpa memerlukan input pengguna atau prompt pengguna sama sekali (misalnya: di dalam pipa CI / CD), Anda dapat menggunakan pendekatan berikut untuk meningkatkangit credential.helper
di mana Anda dapat memilih untuk mengatur
ALICE_GITHUB_PASSWORD
variabel lingkungan dari perintah shell sebelumnya atau dari konfigurasi pipeline Anda dll.Ingat bahwa "store" berbasis git-credential-helper menyimpan kata sandi & nilai dalam teks biasa. Jadi pastikan token / kata sandi Anda memiliki izin yang sangat terbatas.
Sekarang hanya menggunakan https: //[email protected]/my_repo.git mana pun sistem otomatis Anda perlu untuk mengambil repo - itu akan menggunakan mandat untuk
alice
digithub.com
sebagai toko oleh git-credential-helper.sumber