Saya git push
pekerjaan saya ke repositori Git jarak jauh.
Setiap orang push
akan meminta saya untuk memasukkan username
dan password
. Saya ingin menghindarinya untuk setiap dorongan, tetapi bagaimana mengonfigurasi untuk menghindarinya?
Saya git push
pekerjaan saya ke repositori Git jarak jauh.
Setiap orang push
akan meminta saya untuk memasukkan username
dan password
. Saya ingin menghindarinya untuk setiap dorongan, tetapi bagaimana mengonfigurasi untuk menghindarinya?
Jawaban:
Buka terminal untuk membuat kunci ssh:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(Hanya berfungsi jika program komit mampu menggunakan sertifikat / kunci ssh publik & publik)
Berikut adalah langkah - langkah pada gen dempul untuk langkah-langkah di atas
Langkah ini bervariasi, tergantung pada cara mengatur jarak jauh Anda.
Jika itu adalah repositori GitHub dan Anda memiliki hak administratif, buka pengaturan dan klik 'tambah kunci SSH'. Salin konten Anda ~/.ssh/id_rsa.pub
ke bidang yang berlabel 'Kunci'.
Jika repositori Anda dikelola oleh orang lain, berikan administrator Anda id_rsa.pub
.
Jika repositori jarak jauh Anda dikelola oleh Anda, Anda dapat menggunakan perintah ini misalnya:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
Jika Anda telah melakukan langkah-langkah di atas dan masih mendapatkan prompt kata sandi, pastikan URL repo Anda ada dalam formulir
git+ssh://git@github.com/username/reponame.git
sebagai lawan
https://github.com/username/reponame.git
Untuk melihat URL repo Anda, jalankan:
git remote show origin
Anda dapat mengubah URL dengan:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
[1] Bagian ini menggabungkan jawaban dari Eric P.
git remote set-url origin git@github.com:/username/projectname.git
Jalankan perintah berikut untuk mengaktifkan caching kredensial.
$ 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>
Gunakan juga harus menentukan caching berakhir ,
git config --global credential.helper 'cache --timeout 7200'
Setelah mengaktifkan cache kredensial, itu akan di-cache selama 7200 detik (2 jam) .
Catatan: Pembantu kredensial menyimpan kata sandi yang tidak terenkripsi pada disk lokal.
git
manual: "Menggunakan bantuan ini akan menyimpan kata sandi Anda yang tidak dienkripsi di disk, hanya dilindungi oleh izin sistem file."
store
pembantu kredensial yang menyimpan kata sandi pada disk yang tidak dienkripsi.
git config --unset credential.helper
Jika Anda sudah menyiapkan kunci SSH Anda dan masih mendapatkan prompt kata sandi, pastikan URL repo Anda ada dalam formulir
git+ssh://git@github.com/username/reponame.git
sebagai lawan
https://github.com/username/reponame.git
Untuk melihat URL repo Anda, jalankan:
git remote show origin
Anda dapat mengubah URL dengan git remote set-url
seperti:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
git init
secara lokal, kemudian mencoba mendorong setelah menambahkan remote dari repo baru di situs web GitHub.
git@github.com/username/reponame.git
Cukup gunakan --repo
opsi untuk perintah git push. Seperti ini:
$ 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
berfungsi jika Anda tidak keberatan dimintai kata sandi setiap kali.
git push --repo https://github.com/Username/repo
Itu berfungsi tanpa .git
ekstensi
Anda dapat menggunakan git-credential-store via
git config credential.helper store
yang menyimpan kata sandi Anda yang tidak dienkripsi dalam sistem file :
Menggunakan bantuan ini akan menyimpan kata sandi Anda yang tidak dienkripsi di disk, hanya dilindungi oleh izin sistem file. Jika ini bukan tradeoff keamanan yang dapat diterima, coba git-credential-cache, atau cari pembantu yang terintegrasi dengan penyimpanan aman yang disediakan oleh sistem operasi Anda.
Gunakan cache git-credential-cache yang secara default menyimpan kata sandi selama 15 menit.
git config credential.helper cache
untuk mengatur batas waktu yang berbeda, gunakan --timeout
(di sini 5 menit)
git config credential.helper 'cache --timeout=300'
- Jika Anda menggunakan Mac, Git hadir dengan mode "osxkeychain" , yang menyimpan kredensial di gantungan kunci aman yang dilampirkan ke akun sistem Anda. Metode ini menyimpan kredensial pada disk, dan mereka tidak pernah kedaluwarsa, tetapi dienkripsi dengan sistem yang sama yang menyimpan sertifikat HTTPS dan pengisian otomatis Safari. Menjalankan berikut pada baris perintah akan mengaktifkan fitur ini:
git config --global credential.helper osxkeychain
. Anda harus menyimpan kredensial di Keychain menggunakan aplikasi Keychain juga.- Jika Anda menggunakan Windows, Anda dapat menginstal pembantu yang disebut "Git Credential Manager untuk Windows." Ini mirip dengan bantuan "osxkeychain" yang dijelaskan di atas, tetapi menggunakan Windows Credential Store untuk mengontrol informasi sensitif. Itu dapat ditemukan di https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [menekankan milikku]
credential.helper cache
TIDAK berfungsi. Seharusnya begitu git config --global credential.helper wincred
.
Langkah 1 -
Buat kunci SSH pada sistem linux Anda menggunakan perintah di bawah ini
ssh-keygen -t rsa -b 4096 -C "your_email"
Ia akan meminta frasa sandi dan nama file (standarnya adalah ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)
Langkah 2 -
Setelah file dibuat, tambahkan id_rsa.pub kunci publik ke bagian ssh akun github.
Langkah 3 -
Pada mesin Anda tambahkan id_rsa kunci pribadi ke ssh-agent menggunakan perintah di bawah ini
ssh-add ~/.ssh/id_rsa
Langkah 4 -
Sekarang tambahkan remote url git@github.com: user_name / repo_name.git ke repo git lokal Anda menggunakan perintah di bawah ini.
git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git
Itu dia.
Kawat klien git Anda ke toko kredensial OS Anda. Misalnya di Windows Anda mengikat pembantu kredensial untuk meringis:
git config --global credential.helper wincred
Apakah ada cara untuk melewatkan pengetikan kata sandi saat menggunakan https: // di GitHub?
Sebaliknya, pada sistem operasi Windows, ini berfungsi untuk saya:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
misalnya
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
Hanya ingin menunjukkan sesuatu tentang solusi yang disebutkan di atas beberapa kali:
git config credential.helper store
Anda dapat menggunakan perintah apa pun yang memerlukan kata sandi setelah ini. Anda tidak perlu mendorong. (Anda juga dapat menarik misalnya) Setelah itu, Anda tidak perlu mengetikkan nama pengguna / kata sandi lagi.
Sejauh yang saya tahu, hanya ada dua cara aman : ssh atau passwd dienkripsi menggunakan keystore .
cat ~/.ssh/id_rsa.pub
, rekatkan di sana, beri nama dan simpan (jika Anda tidak memiliki file seperti itu, buat sendiri untuk Anda ssh-keygen -t rsa
- cukup masukkan untuk semua petunjuk);git remote set-url origin git+ssh://git@github.com/username/reponame.git
- Anda dapat memeriksanya terlebih dahulu dengan git remote -v
);touch t; git add t; git commit -m "test"; git push
dan konfirmasikan ya untuk menikmati dunia tanpa kata sandi .Jika Anda hanya menggunakan git config --global credential.helper store
seperti yang disebutkan orang lain, kata sandi Anda yang tidak terenkripsi akan disimpan dalam teks biasa ~/.git-credentials
yang tidak aman seperti kedengarannya.
Cobalah untuk mengenkripsi sebagai
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
Dalam hal ini, Anda menggunakan
https://git@github.com/username/reponame.git
.
Solusi Saya di Windows:
ssh-keygen -t rsa
(Tekan enter untuk semua nilai)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
Jika PC Anda aman atau Anda tidak peduli dengan keamanan kata sandi, ini dapat dicapai dengan sangat sederhana. Dengan asumsi bahwa repositori jarak jauh ada di GitHub dan origin
nama lokal Anda untuk repositori jarak jauh, gunakan perintah ini
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
The --push
flag memastikan ini mengubah URL dari repositori untuk git push
perintah saja. (Pertanyaan yang diajukan di posting asli hanya tentang git push
perintah. Memerlukan nama pengguna + kata sandi hanya untuk operasi push adalah pengaturan normal untuk repositori publik di GitHub. Perhatikan bahwa repositori pribadi di GitHub juga akan memerlukan nama pengguna + kata sandi untuk menarik dan mengambil operasi , jadi untuk repositori pribadi Anda tidak ingin menggunakan --push flag
...)
PERINGATAN: Ini pada dasarnya tidak aman karena:
ISP Anda, atau siapa pun yang masuk jaringan Anda, dapat dengan mudah melihat kata sandi dalam teks biasa di URL;
siapa pun yang mendapatkan akses ke PC Anda dapat melihat kata sandi Anda menggunakan git remote show origin
.
Itu sebabnya menggunakan kunci SSH adalah jawaban yang diterima.
Bahkan kunci SSH tidak sepenuhnya aman . Siapa pun yang mendapatkan akses ke PC Anda masih bisa, misalnya, membuat dorongan yang merusak repositori Anda atau - lebih buruk - dorongan berkomitmen membuat perubahan halus pada kode Anda. (Semua komit yang ditekan jelas sangat terlihat di GitHub. Tetapi jika seseorang ingin mengubah kode Anda secara diam-diam, mereka dapat --amend
melakukan komit sebelumnya tanpa mengubah pesan komit, dan kemudian memaksakannya. Itu akan menjadi sembunyi-sembunyi dan cukup sulit untuk diperhatikan dalam praktiknya. )
Tetapi mengungkapkan kata sandi Anda lebih buruk . Jika penyerang mendapatkan pengetahuan tentang nama pengguna + kata sandi Anda, mereka dapat melakukan hal-hal seperti mengunci Anda dari akun Anda sendiri, menghapus akun Anda, menghapus repositori secara permanen, dll.
Atau - untuk kesederhanaan dan keamanan - Anda hanya dapat memberikan nama pengguna Anda di URL, sehingga Anda harus mengetikkan kata sandi setiap kali Anda git push
tetapi Anda tidak harus memberikan nama pengguna setiap kali. (Saya sangat menyukai pendekatan ini, harus mengetikkan kata sandi memberi saya jeda untuk berpikir setiap kali saya git push
, jadi saya tidak dapat secara tidak git push
sengaja.)
git remote set-url --push origin https://<username>@github.com/<repo>
@
, itu melanggar perintah kata sandi setelah @ sebagai bagian dari server git?
Semua ini muncul karena git tidak menyediakan opsi dalam perintah klon / tarik / tekan / ambil untuk mengirim kredensial melalui pipa. Meskipun memberikan credential.helper, ia menyimpan pada sistem file atau membuat daemon, dll. Seringkali, kredensial GIT adalah yang level sistem dan yang membuat kita tetap aman adalah pada aplikasi yang menjalankan perintah git. Memang sangat tidak aman.
Inilah yang harus saya kerjakan. 1. Versi git (git --version) harus lebih besar dari atau sama dengan 1.8.3.
GIT CLONE
Untuk kloning, gunakan "git clone URL" setelah mengubah URL dari format, http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} ke http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
Kemudian bersihkan repositori kata sandi seperti pada bagian selanjutnya.
PEMBELIAN
Sekarang, ini akan hilang dan
Jika aplikasi Anda menggunakan Java untuk mengeluarkan perintah ini, gunakan ProcessBuilder alih-alih Runtime. Jika Anda harus menggunakan Runtime, gunakan getRunTime (). Exec yang menggunakan array String sebagai argumen dengan / bin / bash dan -c sebagai argumen daripada argumen yang menggunakan String tunggal sebagai argumen.
GIT FETCH / PULL / PUSH