Bagaimana cara memberikan username dan password saat menjalankan "git clone git@remote.git"?

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 git@remote.git

I've mencoba seperti ini:

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

Tapi mereka belum't bekerja.

Mengomentari pertanyaan (2)
Larutan

Gunakan:

git clone https://username:password@github.com/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://username@github.com/username/repository.git

Ia akan meminta anda untuk password anda.

Komentar (30)

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.

Menggunakan ssh-agent untuk menghindari mengetik password semua waktu

Jika 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.

Memilih antara beberapa account di GitHub (atau Heroku atau...)

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 git@github.com:foo/foo.git dengan foo account git@github.com: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

Menghindari ssh sama sekali

Beberapa layanan yang menyediakan akses HTTP sebagai alternatif untuk ssh:

  • GitHub:

https://username:password@github.com/username/repository.git

  • Gitorious:

https://username:password@gitorious.org/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.

Komentar (0)

Dalam komentar-komentar dari @Bassetassen's jawaban, @plosco disebutkan bahwa anda dapat menggunakan git clone https://@github.com/username/repository.git` untuk clone dari GitHub setidaknya. Saya pikir saya akan memperluas tentang cara untuk melakukan itu, dalam kasus orang datang di jawaban ini seperti yang saya lakukan ketika mencoba untuk mengotomatisasi beberapa kloning.

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.

1. Membuat Token

GitHub memiliki seluruh panduan di sini pada cara mendapatkan token, tapi di sini's TL;DR

  1. Pergi ke Pengaturan > Pengembang Pengaturan > Pribadi Akses Token (di sini's direct link)
  2. Klik "Menghasilkan Token Baru" dan masukkan password anda lagi. (hsebelum's lain direct link)
  3. Mengatur deskripsi/nama untuk itu, periksa "repo" izin dan tekan "Menghasilkan token" tombol di bagian bawah halaman.
  4. Copy token baru sebelum anda meninggalkan halaman

2. Clone Repo

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.

3. Meninggalkan Jejak

Tidak semua ini mungkin diperlukan, tergantung pada seberapa sensitif apa yang anda're lakukan.

  • Mungkin anda don't ingin meninggalkan token yang menggantung di sekitar jika anda tidak memiliki niat untuk menggunakannya untuk beberapa waktu, jadi kembali ke token halaman dan tekan tombol delete di sebelah itu.
  • Jika anda don't perlu repo lagi, hapus rm -rf / <map>.
  • Jika perlu repo lagi, tapi don't perlu untuk mengotomatisasi itu lagi, anda dapat menghapus remote dengan melakukan git remote menghapus asal atau hanya menghapus token dengan menjalankan git remote set-url asal https://github.com//<repositori.git>`.
  • Jelas anda bash sejarah untuk memastikan token doesn't tinggal login di sana. Ada banyak cara untuk melakukan hal ini, lihat pertanyaan dan pertanyaan. Namun, mungkin akan lebih mudah untuk hanya menambahkan semua perintah di atas dengan ruang dalam rangka untuk mencegah mereka yang disimpan untuk mulai dengan.

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.

Komentar (1)

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/

Komentar (0)

Saya memecahkan masalah ini dengan cara sebagai berikut:

Komentar (1)

Pada Windows, berikut ini langkah-langkah yang harus re-memicu GitHub jendela login ketika `git clone a'ing:

  • Pencarian start menu untuk "Credential Manager"
  • Pilih "Windows Kredensial"
  • Menghapus kredensial yang terkait dengan Git atau GitHub

Komentar (0)
git config --global core.askpass

Menjalankan ini terlebih dahulu sebelum kloning dengan cara yang sama, harus tetap!

Komentar (1)

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&#39;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://user@code.domain.org/git/[organization]/[team]/[repository.git]

CATATAN: tanda kurung direktori sub-jalan hanya merujuk ke referensi internal, dan akan bervariasi untuk anda!

Komentar (0)