Ssh-key kullanarak şifre olmadan GitHub'a basın


215

Parola olmadan bir SSH anahtar çifti oluşturdum ve ortak anahtarı GitHub'a ekledim.

İle bağlantı

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

başarılı oldu ve anahtarı yeniden adlandırdığımda başarısız oluyor.

Ancak değişikliklerimi zorlamak istediğimde, fotoğraflar benden kullanıcı adımı ve şifre kombinasyonumu soruyor.

Parola olmadan zorlamanın bir yolu var mı?


9
https://github...Uzaktan kumandalarınızda kullanmadığınızdan emin olun . Ayrıca git@github...biçimi takip etmelidirler .
cjc343

Yanıtlar:


421

Sizden bir kullanıcı adı ve şifre isteniyorsa , uzaktan kumandanız SSH URL'si yerine HTTPS URL'sini gösteriyor.

Ssh olarak değiştirin.

Örneğin, Git gibi bir GitHub projesinin HTTPS URL'si olacaktır:

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

Ve SSH olanı:

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

Yapabilirsin:

git remote set-url origin git@github.com:<Username>/<Project>.git

URL'yi değiştirmek için.


4
Bu çözüldü, ama kendime neden Github neden yeni bir deponun uzak ucunu varsayılan olarak bir http URL'sine yönlendirmenizi öneririm diye soruyorum. Ben sadece sıfırdan bir depo oluşturdum ve bir git bir değil, bir https uzak URL ayarlamak için bir seçenek sunuldu.
Preslav Rachev

2
İşte otomatik olarak uygun git one (! Sadece github URL'ler için çalışır) için senin https url değişecek hızlıca tek liner kabuk komutu var:git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba

11

Ek olarak, gists için kullanıcı adını dışarıda bırakmalısınız

git remote set-url origin git@gist.github.com:<Project code>

10

Gerçekten SSH URL'sini kullanıyorsanız, ancak git tuşuna basarken yine de kullanıcı adı ve şifre istenirse:

git remote set-url origin git@github.com:<Username>/<Project>.git

Sorun gidermeyi denemelisiniz:

ssh -vT git@github.com

Aşağıda bir örnek çıktı:

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

Aslında daha önce ortak anahtarı GitHub'a zaten ekledim ve ayrıca yerel olarak özel anahtarım var. Ancak, özel anahtarım farklı bir ada sahip /c/Users/Yuci/.ssh/github_rsa.

Örnek çıktıya göre Git deniyor /c/Users/Yuci/.ssh/id_rsa, ki bende yok. Bu nedenle, sadece kopya olabilir github_rsaiçin id_rsaaynı dizinde.

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

Şimdi ssh -vT git@github.comtekrar koştuğumda:

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

Ve şimdi kullanıcı adı ve şifre sorulmadan GitHub'a gidebilirim :-)


5

HTTPS yerine SSH sürümünü kullanmalısınız . Bir havuzdan klonladığınızda, bağlantıyı SSH ile kopyalayın SSH'nin kullanımı kolay olduğundan ve erişim ile ilgili tüm sorunları çözdüğü sürümüyle . Hesabınıza girdiğiniz her SSH için erişimi ayarlayabilirsiniz (push, pull, clone vb.)

İşte SSH'ye neden ihtiyacımız olduğunu ve nasıl kullanılacağını söyleyen bir bağlantı: adım adım

Git SSH Anahtarları Oluştur


0

Her zamanki gibi bir SSH anahtarı oluşturun ve genel anahtarı GitHub'a yapıştırın. Özel anahtarı ssh-agent'a ekleyin. (Sanırım yaptığın şey bu.)

Her şeyin doğru olup olmadığını kontrol etmek için ssh -T git@github.com

Ardından, uzak noktayı aşağıdaki gibi değiştirmeyi unutmayın:

git remote set-url origin git@github.com:username/your-repository.git

-4

Komut satırını kullanarak:

Giriş ls -al ~/.sshMevcut SSH anahtarlarının mevcut olup olmadığını görmek için .

Terminalde şöyledir: Dizin yok

Ardından yeni bir SSH anahtarı oluşturun

Aşama 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Adım 2.

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

Aşama 3.

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

Enter same passphrase again: [Type password again]

Maalesef, bu soru anahtarların nasıl oluşturulacağıyla değil, kimlik doğrulaması yerine anahtarı kullanmak için
git'i ayarlamakla ilgili
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.