Dorong ke GitHub tanpa kata sandi menggunakan ssh-key

215

Saya membuat pasangan kunci SSH tanpa kata sandi dan menambahkan kunci publik ke GitHub.

Hubungan dengan

user@dev:/var/www/project# ssh -T [email protected]
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

berhasil dan ketika saya mengganti nama kuncinya, gagal.

Tetapi ketika saya ingin mendorong perubahan saya, masih meminta saya untuk kombinasi nama pengguna dan kata sandi.

Apakah ada cara untuk mendorong tanpa kata sandi?

Sebus
sumber
9
Pastikan Anda tidak menggunakan https://github...remote Anda. Mereka juga harus mengikuti git@github...format.
cjc343

Jawaban:

421

Jika meminta Anda untuk nama pengguna dan kata sandi, remote asal Anda menunjuk ke URL HTTPS daripada URL SSH.

Ubah ke ssh.

Misalnya, proyek GitHub seperti Git akan memiliki URL HTTPS:

https://github.com/<Username>/<Project>.git

Dan yang SSH:

[email protected]:<Username>/<Project>.git

Anda dapat melakukan:

git remote set-url origin [email protected]:<Username>/<Project>.git

untuk mengubah URL.

manojlds
sumber
4
Ini menyelesaikannya, tapi saya terus bertanya pada diri sendiri mengapa Github kemudian menyarankan Anda untuk mengarahkan remote end repositori baru ke URL http secara default. Saya baru saja membuat repositori dari awal, dan saya diberikan opsi untuk mengatur URL jarak jauh https, bukan git.
Preslav Rachev
2
Inilah perintah shell satu-liner cepat yang secara otomatis akan mengubah url https Anda ke git yang sesuai (Hanya berfungsi untuk url github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//[email protected]:/')
Christopher Shroba
11

Selain untuk intisari, sepertinya Anda harus meninggalkan nama pengguna

git remote set-url origin [email protected]:<Project code>
Gordon Wells
sumber
10

Jika Anda memang menggunakan URL SSH, tetapi masih diminta untuk nama pengguna dan kata sandi saat git mendorong:

git remote set-url origin [email protected]:<Username>/<Project>.git

Anda harus mencoba pemecahan masalah dengan:

ssh -vT [email protected]

Di bawah ini adalah contoh keluaran:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

Saya sebenarnya sudah menambahkan kunci publik ke GitHub sebelumnya, dan saya juga punya kunci pribadi secara lokal. Namun, kunci pribadi saya memiliki nama yang berbeda /c/Users/Yuci/.ssh/github_rsa.

Menurut hasil sampel, Git sedang mencoba /c/Users/Yuci/.ssh/id_rsa, yang tidak saya miliki. Karena itu, saya cukup menyalin github_rsake id_rsadalam direktori yang sama.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Sekarang ketika saya lari ssh -vT [email protected]lagi, saya punya:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

Dan sekarang saya dapat mendorong ke GitHub tanpa diminta nama pengguna dan kata sandi :-)

Yuci
sumber
5

Anda harus menggunakan versi SSH , bukan HTTPS . Saat Anda mengkloning dari repositori, salin tautannya dengan SSH versi , karena SSH mudah digunakan dan menyelesaikan semua masalah dengan akses. Anda dapat mengatur akses untuk setiap SSH yang Anda masukkan ke akun Anda (seperti push, pull, clone, dll ...)

Berikut ini tautan, yang mengatakan mengapa kita membutuhkan SSH dan cara menggunakannya: langkah demi langkah

Git Hasilkan Kunci SSH

Hazarapet Tunanyan
sumber
0

Seperti biasa, buat kunci SSH dan rekatkan kunci publik ke GitHub. Tambahkan kunci pribadi ke ssh-agent. (Saya menganggap ini adalah apa yang telah Anda lakukan.)

Untuk memeriksa semuanya benar, gunakan ssh -T [email protected]

Selanjutnya, jangan lupa untuk memodifikasi titik jarak jauh sebagai berikut:

git remote set-url origin [email protected]:username/your-repository.git
Seenivasan
sumber
-4

Menggunakan baris perintah:

Masuk ls -al ~/.sshuntuk melihat apakah kunci SSH yang ada ada.

Di terminal ditunjukkan: Tidak ada direktori

Kemudian buat kunci SSH baru

Langkah 1.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Langkah 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

langkah 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]
Jitendra
sumber
Maaf, pertanyaan ini bukan tentang cara membuat kunci tetapi untuk mengatur git menggunakan kunci alih-alih otentikasi
Sebus