Saya telah mengkloning repositori git saya ke ssh. Jadi, setiap kali saya berkomunikasi dengan master asal dengan mendorong atau menarik, saya harus memasukkan kembali kata sandi saya. Bagaimana saya bisa mengkonfigurasi git sehingga saya tidak perlu memasukkan kata sandi saya beberapa kali?
195
Jawaban:
Coba
ssh-add
, Anda harusssh-agent
menjalankan dan menahan kunci pribadi Anda(Ok, menanggapi pertanyaan yang diperbarui, Anda pertama kali menjalankan
ssh-keygen
untuk menghasilkan kunci publik dan pribadi seperti yang dijelaskan Jefromi . Anda meletakkan kunci publik di server. Anda harus menggunakan kata sandi, jika Anda tidak memiliki padanan kata yang sama -text password di kunci pribadi Anda. Tetapi ketika Anda melakukannya, maka Anda perlu sebagai hal praktis seperti yang dijelaskan di bawah ini.)ssh-agent
Anda ingin menjalankan
ssh-agent
di latar belakang saat Anda masuk. Setelah Anda masuk, idenya adalah untuk menjalankanssh-add
sekali dan hanya sekali, untuk memberikan agen frasa sandi Anda, untuk memecahkan kode kunci Anda. Agen kemudian hanya duduk di memori dengan kunci Anda dibuka dan dimuat, siap digunakan setiap kali Anda ssh di suatu tempat.Semua perintah ssh-family 1 kemudian akan berkonsultasi dengan agen dan secara otomatis dapat menggunakan kunci pribadi Anda.
Pada sistem OSX (err, macOS ), GNOME dan KDE,
ssh-agent
biasanya diluncurkan secara otomatis untuk Anda. Saya akan membahas rinciannya, seperti saya, Anda juga memiliki lingkungan Cygwin atau jendela lain di mana ini pasti tidak dilakukan untuk Anda.Mulai di sini:
man ssh-agent
.Ada berbagai cara untuk menjalankan agen secara otomatis. Seperti yang dijelaskan oleh halaman manual, Anda dapat menjalankannya sehingga merupakan induk dari semua proses login Anda yang lain. Dengan begitu, variabel lingkungan yang disediakannya akan secara otomatis berada di semua shell Anda. Ketika Anda (nanti) memohon
ssh-add
ataussh
keduanya akan memiliki akses ke agen karena mereka semua memiliki variabel lingkungan dengan nama path soket ajaib atau apa pun.Atau, Anda dapat menjalankan agen sebagai anak biasa, menyimpan pengaturan lingkungan dalam file, dan sumber file itu di setiap shell ketika dimulai.
Sistem OSX dan Ubuntu saya secara otomatis melakukan pengaturan peluncuran agen, jadi yang harus saya lakukan adalah menjalankannya
ssh-add
sekali. Coba jalankanssh-add
dan lihat apakah itu berfungsi, jika demikian, maka Anda hanya perlu melakukannya sekali per reboot.Sistem Cygwin saya membutuhkannya dilakukan secara manual, jadi saya melakukan ini di saya
.profile
dan saya memiliki.bashrc
sumber.profile
:The
.agent
file yang dibuat secara otomatis oleh script; ini berisi definisi variabel lingkungan dan ekspor. Di atas mencoba untuk sumber file .agent, dan kemudian mencoba keps(1)
agen. Jika tidak berhasil, ia memulai agen dan membuat file agen baru. Anda juga dapat menjalankanssh-add
dan jika gagal memulai agen.1. Dan bahkan lokal dan jarak jauh
sudo
dengan ekstensi pam yang tepat.sumber
ssh-agent
itu mungkin lebih baik untuk digunakan:eval `ssh-agent`
Punya masalah serupa dengan GitHub karena saya menggunakan protokol HTTPS. Untuk memeriksa protokol apa yang Anda gunakan jalankan saja
dan lihat garis yang dimulai dengan
remote.origin.url
. Untuk beralih protokol Andasumber
Permission denied
kesalahan.git remote set-url origin [email protected]:your_username/your_project.git
Ini tentang mengkonfigurasi ssh, bukan git. Jika Anda belum melakukannya, Anda harus menggunakan
ssh-keygen
(dengan frasa sandi kosong) untuk membuat pasangan kunci. Kemudian, Anda menyalin kunci publik ke tujuan jarak jauh denganssh-copy-id
. Kecuali Anda memerlukan beberapa kunci (mis. Yang lebih aman dengan frasa sandi untuk keperluan lain) atau Anda memiliki beberapa hal identitas ganda yang benar-benar aneh, ini sederhana:Sunting: Anda harus benar-benar hanya membaca jawaban DigitalRoss, tetapi: jika Anda menggunakan kunci dengan frasa sandi, Anda harus menggunakan
ssh-add <key-file>
untuk menambahkannyassh-agent
(dan jelas memulai sebuahssh-agent
jika distribusi Anda belum memiliki satu berjalan untuk Anda).sumber
ssh-agent
karena ia ingin mem-bypass masalah pass-frasa-setiap-kali. Tidak downvoting tapi saya pikir Anda perlu meningkatkan jawaban ini, kecuali saya orang yang salah paham ...ssh-agent
. Memberi +1 kepada Anda!ssh-*
menyebut kata sandi yang diperlukan untuk menggunakan kunci - di mana Anda benar-benar bermaksud menggunakan kata sandi pengguna aktual di remote?Pastikan bahwa ketika Anda mengkloning repositori, Anda melakukannya dengan URL SSH dan bukan HTTPS; di kotak URL klon repo, pilih protokol SSH sebelum menyalin URL. Lihat gambar di bawah ini:
sumber
Jika Anda telah dikloning menggunakan HTTPS (disarankan) maka: -
lalu
batas waktu = 2592000 (30 Hari dalam detik) untuk mengaktifkan caching selama 30 hari (atau apa pun yang cocok untuk Anda).
Sekarang jalankan perintah git sederhana yang membutuhkan nama pengguna dan kata sandi Anda.
Masukkan kredensial Anda sekali dan sekarang caching diaktifkan selama 30 Hari.
Coba lagi dengan perintah git dan sekarang Anda tidak memerlukan kredensial.
Untuk info lebih lanjut: - Caching kata sandi GitHub Anda di Git
Catatan : Anda perlu Git 1.7.10 atau yang lebih baru untuk menggunakan pembantu kredensial. Pada sistem restart, kita mungkin harus memasukkan kata sandi lagi.
sumber
Memperluas pemikiran Muein bagi mereka yang lebih memilih untuk mengedit file langsung daripada menjalankan perintah di git-bash atau terminal.
Buka direktori .git proyek Anda (root proyek pada mesin lokal Anda) dan buka file 'config'. Kemudian cari [remote "origin"] dan atur konfigurasi url sebagai berikut:
sumber
Saya pikir ada dua hal yang berbeda di sini. Yang pertama adalah bahwa otentikasi SSH normal mengharuskan pengguna untuk memasukkan kata sandi akun (di mana kata sandi akun akan diautentikasi terhadap metode yang berbeda, tergantung pada konfigurasi sshd).
Anda dapat menghindari memasukkan kata sandi itu menggunakan sertifikat. Dengan sertifikat Anda masih harus memasukkan kata sandi, tetapi kali ini adalah kata sandi kunci pribadi Anda (yang tidak tergantung pada kata sandi akun).
Untuk melakukan ini, Anda dapat mengikuti instruksi yang ditunjukkan oleh steveth45:
Jika Anda ingin menghindari memasukkan kata sandi sertifikat setiap kali, maka Anda dapat menggunakan ssh-agent, seperti yang ditunjukkan oleh DigitalRoss
Satu-satunya masalah ssh-agent adalah, setidaknya pada * nix, Anda harus meletakkan kata sandi sertifikat pada setiap shell baru. Dan kemudian sertifikat "dimuat" dan Anda dapat menggunakannya untuk mengotentikasi terhadap server ssh tanpa memasukkan kata sandi apa pun. Tapi ini ada di shell tertentu.
Dengan gantungan kunci, Anda dapat melakukan hal yang sama dengan ssh-agent tetapi "seluruh sistem". Setelah Anda menyalakan komputer Anda, Anda membuka shell dan memasukkan kata sandi sertifikat. Dan kemudian, setiap shell lain akan menggunakan sertifikat "dimuat" itu dan kata sandi Anda tidak akan pernah ditanyakan lagi sampai Anda me-restart PC Anda.
Gnome memiliki aplikasi serupa, bernama Gnome Keyring yang meminta kata sandi sertifikat Anda saat pertama kali menggunakannya dan kemudian menyimpannya dengan aman sehingga Anda tidak akan ditanya lagi.
sumber
AddKeysToAgent yes
di .ssh / config. Kemudian dimuat dalam memori sampai Anda mematikan komputerJika Anda menggunakan github, mereka memiliki tutorial yang sangat bagus yang menjelaskannya dengan lebih jelas (setidaknya bagi saya).
http://help.github.com/set-up-git-redirect/
sumber
Ketika ditanya frasa sandi, biarkan kosong yaitu, cukup tekan enter. sesimpel itu!!
sumber
Coba ini dari kotak tempat Anda mendorong
Anda kemudian harus mendapatkan respons sambutan dari github dan akan baik-baik saja untuk kemudian mendorong.
sumber
Hi gkucmierz! You've successfully authenticated, but GitHub does not provide shell access.
tetapi entah bagaimana git masih meminta saya kata sandi ketika saya mencoba untuk mendorongSaya harus mengkloning git repo dari server yang tidak mengizinkan kunci login vie ssh tetapi hanya dengan pengguna / kata sandi. Saya tidak menemukan cara untuk mengkonfigurasi Git Plugin untuk menggunakan kombinasi pengguna / kata sandi yang sederhana jadi saya menambahkan perintah shell berikut sebagai langkah pra-bangun pada mesin linux build yang tergantung pada perkakas yang diharapkan (apt-get install expect):
INI BUKAN CARA YANG BAIK UNTUK MEMECAHKAN MASALAH INI SEBAGAI PASSWORD ANDA DITAMPILKAN SEBAGAI TEKS CLEAR DALAM KONFIGURASI DAN LOG JOB JENKINS! HANYA MENGGUNAKANNYA JIKA TIDAK ADA CARA UNTUK MENGONFILMASI OTENTIFIKASI RSA-KEY ATAU KEMUNGKINAN KONFIGURASI LAINNYA!
sumber
Tambahkan satu baris
AddKeysToAgent yes
di bagian atas file .ssh / config. Ofcourse ssh-agent harus berjalan sebelumnya. Jika tidak berjalan (centang olehprep ssh-agent
), cukup jalankan sajaeval $(ssh-agent)
Sekarang, kuncinya dimuat ke seluruh sistem ke dalam memori dan Anda tidak perlu mengetikkan frasa sandi lagi.
Sumber solusinya adalah /ubuntu/362280/enter-ssh-passphrase-once/853578#853578
sumber
Saya telah mencoba untuk menghindari mengetikkan frasa sandi sepanjang waktu juga karena saya menggunakan ssh di windows. Apa yang saya lakukan adalah memodifikasi file .profile saya, sehingga saya memasukkan frasa sandi saya di sesi tertentu. Jadi ini adalah bagian dari kode:
jadi dengan ini saya mengetikkan frasa sandi saya sekali dalam satu sesi ..
sumber
Saya mencoba semua saran ini dan banyak lagi, supaya saya bisa mendapatkan klon dari AWS saya. Tidak ada yang berhasil. Saya akhirnya berselingkuh karena putus asa: Saya menyalin isi id_rsa.pub di mesin lokal saya dan menambahkannya ke ~ / .ssh / known_hosts pada contoh AWS saya.
sumber