Aku tahu bagaimana untuk memberikan username dan password untuk permintaan HTTPS seperti ini:
git clone https://username:password@remote
Tapi aku'a ingin tahu bagaimana untuk memberikan username dan password untuk remote seperti ini:
git clone [email protected]
I've mencoba seperti ini:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Tapi mereka belum't bekerja.
Gunakan:
git clone https://username:[email protected]/username/repository.git
Cara ini bekerja untuk saya dari repositori GitHub.
Berdasarkan Michael Scharf's komentar:
Anda dapat meninggalkan password sehingga tidak't bisa login di Bash history file:
git clone https://[email protected]/username/repository.git
Ia akan meminta anda untuk password anda.
The user@host:path/to/repo
format memberitahu Git untuk menggunakan ssh untuk masuk ke host
dengan username user
. Dari git membantu clone
:
alternatif scp-seperti sintaks juga dapat digunakan dengan protokol ssh:
[user@]host.xz:path/ke/repo.git/
Bagian sebelum @
adalah username, dan metode otentikasi (password, kunci publik, dll.) ditentukan oleh ssh, tidak Git. Git tidak memiliki cara untuk lulus password ssh, karena ssh bahkan mungkin tidak menggunakan password tergantung pada konfigurasi remote server.
ssh-agent
untuk menghindari mengetik password semua waktuJika anda don't ingin mengetik password ssh anda sepanjang waktu, yang khas adalah solusi untuk menghasilkan pasangan kunci publik/pribadi, masukan kunci publik di ~/.ssh/authorized_keys
file pada remote server, dan beban kunci pribadi anda ke ssh-agent
. Juga melihat https://stackoverflow.com/q/1595848/712605, GitHub's halaman bantuan pada ssh key passphrase, gitolite's ssh dokumentasi, dan Heroku's ssh keys dokumentasi.
Jika anda memiliki beberapa akun di tempat seperti GitHub atau Heroku, anda'll memiliki beberapa ssh keys (setidaknya satu per akun). Untuk memilih akun mana yang ingin anda login sebagai, anda harus katakan ssh yang kunci pribadi untuk menggunakan.
Untuk contoh, misalkan anda punya dua akun GitHub: foo
dan bar
. Kunci ssh anda untuk foo
adalah ~/.ssh/foo_github_id
dan ssh kunci bar
adalah ~/.ssh/bar_github_id
. Anda ingin mengakses [email protected]:foo/foo.git
dengan foo
account [email protected]:bar/bar.git
dengan bar
akun. Anda akan menambahkan kode berikut ke dalam ~/.ssh/config
:
Host gh-foo
Hostname github.com
User git
IdentityFile ~/.ssh/foo_github_id
Host gh-bar
Hostname github.com
User git
IdentityFile ~/.ssh/bar_github_id
Anda kemudian akan mengkloning dua repositori sebagai berikut:
git clone gh-foo:foo/foo.git # logs in with account foo
git clone gh-bar:bar/bar.git # logs in with account bar
Beberapa layanan yang menyediakan akses HTTP sebagai alternatif untuk ssh:
https://username:[email protected]/username/repository.git
https://username:[email protected]/project/repository.git
PERINGATAN: Menambahkan kata sandi ke clone URL akan menyebabkan Git untuk toko anda plaintext password .git/config
. Untuk aman menyimpan password anda ketika menggunakan HTTP, gunakan kredensial penolong. Misalnya:
git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git
Hal di atas akan menyebabkan Git untuk meminta password anda sekali setiap 15 menit (secara default). Lihat git membantu kredensial
untuk rincian.
Dalam komentar-komentar dari @Bassetassen's jawaban, @plosco disebutkan bahwa anda dapat menggunakan git clone https://
GitHub memiliki sangat panduan tentang cara untuk melakukan hal ini, tapi itu doesn't menutupi apa yang harus dilakukan jika anda ingin memiliki semua itu dalam satu baris untuk otomatisasi tujuan. Ini memperingatkan bahwa menambah token untuk clone URL akan menyimpannya dalam plaintext di .git/config
. Ini jelas merupakan risiko keamanan untuk hampir setiap use case, tapi karena saya berencana menghapus repo dan mencabut token ketika saya'm dilakukan, I don't peduli.
GitHub memiliki seluruh panduan di sini pada cara mendapatkan token, tapi di sini's TL;DR
Sama seperti perintah @plosco memberi, git clone https://<token>@github.com/<username>/<repositori>.git
, hanya mengganti <token>
, <username>
dan <repositori>
dengan fasilitas info anda.
Jika anda ingin mengkloning itu ke folder tertentu, hanya memasukkan alamat folder di akhir seperti ini: git clone https://<token>@github.com/<username>/<repositori.git> <map>
, di mana <map>
adalah, anda dapat menebaknya, folder untuk mengkloning itu! Anda tentu saja dapat menggunakan.
, ..
, ~
, dll. di sini seperti anda dapat di tempat lain.
Tidak semua ini mungkin diperlukan, tergantung pada seberapa sensitif apa yang anda're lakukan.
rm -rf / <map>
.git remote menghapus asal
atau hanya menghapus token dengan menjalankan git remote set-url asal https://github.com/Perhatikan bahwa I'm tidak pro, jadi di atas mungkin tidak aman dalam arti bahwa tidak ada jejak akan dibiarkan untuk setiap jenis pekerjaan forensik.
Meskipun ada banyak jawaban, diriku sendiri menghadapi diulang masalah ketika username atau password memiliki karakter khusus di dalamnya.
URL encode username dan password untuk git, kemudian menggunakannya sebagai bagian dari URL itu sendiri (bila tidak ada kekhawatiran keamanan).
Mengatakan, URL dikodekan nilai dari username
'user+1' adalah user%2B1
dan URL dikodekan nilai password
'Selamat datang@1234' Selamat datang%401234
Kemudian anda GIT Clone URL akan terlihat seperti ini,
git clone https://user%2B1:Welcome%401234@actual-git-url-for-the-repo
bekerja dengan sempurna, sedangkan,
git clone https://user+1:Welcome@1234@actual-git-url-for-the-repo memberi anda kesalahan 403
Semoga ini bisa membantu.
Hanya dalam kasus, ingin URL encode online: https://www.urlencoder.org/
Pada Windows, berikut ini langkah-langkah yang harus re-memicu GitHub jendela login ketika `git clone a'ing:
Ini adalah aplikasi yang sangat baik Stack Overflow pertanyaan, dan jawaban yang telah sangat instruktif, seperti yang saya mampu untuk menyelesaikan masalah yang mengganggu saya berlari ke baru-baru ini.
Organisasi tempat saya bekerja menggunakan Atlassian's BitBucket
produk (tidak Github), pada dasarnya versi mereka GitHub sehingga repositori dapat dijamin sepenuhnya pada premis. Aku berlari ke dalam masalah yang sama seperti @mengkoordinasikan, bahwa saya password yang diperlukan untuk repositori baru aku memeriksa. Kredensial saya telah diselamatkan secara global untuk semua BitBucket
proyek, jadi saya'm tidak yakin apa yang mendorong hilangnya kepercayaan.
Singkatnya, saya bisa masukkan perintah GIT (memasok hanya nama pengguna saya), yang kemudian diminta Git's Credential Manager untuk meminta saya untuk password, yang kemudian saya mampu untuk menyimpan.
git clone https://[email protected]/git/[organization]/[team]/[repository.git]
CATATAN: tanda kurung direktori sub-jalan hanya merujuk ke referensi internal, dan akan bervariasi untuk anda!