GitHub neden SSH üzerinden HTTPS öneriyor?


334

GitHub sitesinde bir bağlantı var ...

https://help.github.com/articles/generating-ssh-keys

... ve belirtiyor ...

Önerilen HTTPS yöntemini kullanmamaya karar verdiyseniz, bilgisayarınız ile GitHub arasında güvenli bir bağlantı kurmak için SSH anahtarlarını kullanabiliriz. Aşağıdaki adımlar, bir SSH anahtarı oluşturma ve ardından ortak anahtarı GitHub hesabınıza ekleme konusunda size yol gösterecektir.

HTTPS neden önerilen yöntemdir? SSH yönteminde bir çeşit güvenlik açığı var mı yoksa daha yavaş mı? Bir SSH anahtarı oluşturdum, bu nedenle güvenlikle ilgili endişeleri azaltabilir mi?


39
Daha az yapılandırma, belki de daha kolay anlamına gelir. Ayrıca, bazı düşük işletim sistemlerinde varsayılan olarak SSH istemcileri yüklü değildir.
katspaugh

45
Bu konuyu bulan gelecekteki kullanıcılara: GitHub politikalarını değiştirdi ve şimdi "GitHub ile etkileşime girerken SSH bağlantısı kullanmanızı önemle tavsiye ediyoruz" diyor.
beardedlinuxgeek

9
@StevePomeroy, "şiddetle tavsiye" ifadesinin o konumda olduğunu sanmıyorum.
Noel Abrahams

5
@BonsaiOak Steve Pomeroy'un - web.archive.org/web/20140321204642/https://help.github.com/… - adresine bağlı olduğu halde, o zamandan beri değiştirmiş gibi görünüyor.
beardedlinuxgeek

5
@ br3nt Doğru. Bunu tavsiye etmiyorlardı. Sonra yaptılar. Sonra tekrar etmediler. Bu yüzden bağlantım bir archive.org sayfasına
beardedlinuxgeek

Yanıtlar:


192

GitHub önerilerini birkaç kez değiştirdi ( örnek ).

Şu anda HTTPS'yi önerdikleri anlaşılıyor çünkü en geniş ağ ve platform yelpazesinde ve tüm bunlara yeni sahip olan kullanıcılar tarafından kurulumu en kolay olanı.

SSH'de doğal bir kusur yoktur (devre dışı bırakacaklarsa) - aşağıdaki bağlantılarda, SSH bağlantıları hakkında da ayrıntı sağladıklarını göreceksiniz:

  1. HTTPS'nin bir güvenlik duvarı tarafından engellenmesi daha az olasıdır.

    https://help.github.com/articles/which-remote-url-should-i-use/

    Https: // klon URL'leri herkese açık ve gizli tüm depolarda bulunur. Bu URL'ler, bir güvenlik duvarı veya proxy'nin arkasında olsanız bile her yerde çalışır.

  2. HTTPS bağlantısı credential.helperşifrenizi önbelleğe almanızı sağlar .

    https://help.github.com/articles/set-up-git

    Yararlı bilgiler: Kimlik bilgisi yardımcısı yalnızca bir HTTPS repo URL'sini klonladığınızda çalışır. Bunun yerine SSH repo URL'sini kullanırsanız, kimlik doğrulama için SSH anahtarları kullanılır. Önerilmese de, bu yöntemi kullanmak isterseniz, bir SSH anahtarı oluşturma ve kullanma konusunda yardım için bu kılavuza göz atın.


52
Ah, yani HTTPS'yi öneriyorlar, böylece belgelemek zorunda değiller ssh-agentmi? Yeterince adil. Teşekkürler!
sarnold

74
@sarnold Muhtemelen ssh-agent ve ortak anahtar yönetimi ile ilgili soruların hacmi ve SSH'ye değil, giden HTTP / HTTPS'ye izin veren kurumsal güvenlik duvarlarının sayısı ile ilgilidir.
Todd A. Jacobs

7
Bence tüm ssh anahtar işini oluşturmak / kopyalamak / yapıştırmak zorunda değilsiniz çünkü https insanların başlamasını kolaylaştırır. Ayrıca ssh şifrenizi alan (veya açık bıraktığınız bir bilgisayar terminalini bulan) bir saldırganın hala bir şey itmek için Github şifrenizi bilmesi gerekeceğinden Github'un bakış açısından daha güvenli görünebilir.
k107

4
@kristi Saldırgan, parola önbelleği sona ermeden önce bu terminali bulursa, parolayı bilmese bile zorlayamaz mı? Soru ssh-agent kullanıyorsanız aynıdır, bariz fark, github şifreniz yerine ssh anahtarının şifresini girmenizdir (ve önbellek süresinin dolması için belirgin bir ayar görünmemektedir). Ssh anahtar parolası yerine github parolasını girme fikri, iki anahtarın size verdiği güç aynı AFAIK olduğu için küçük bir adım da olsa geriye doğru bir adım gibi görünüyor.
Halil Özgür

8
Neredeyse tamamen aldıkları destek sorgularının hacmini azaltmakla ilgili olduğunu düşünüyorum. Ben de size beri iddia herhalde sahip erişmek için yine HTTPS üzerinden web sitesine şifrenizi girmek için, sen olamaz artan farklı bir kimlik doğrulama mekanizması (SSH tuşları) kullanarak güvenliği, fakat uygulanabilir sen saldırı yüzeyini artırarak olduğunuz olabilir azaltmak güvenliği. Yine de, doğru kullanıldıklarında hem HTTPS hem de SSH yeterince güvenli olmalıdır.
Cartroo

52

HTTPS'nin GitHub tarafından çeşitli nedenlerle önerildiğini düşünüyorum

1) Yalnızca hesap ayrıntılarınıza ihtiyacınız olduğu için her yerden kullanmak daha kolaydır (SSH anahtarı gerekmez)

2) HTTPS Tüm güvenlik duvarlarında açık olan bir bağlantı noktasıdır. SSH her zaman harici ağlarla iletişim için bir bağlantı noktası olarak açık değildir

GitHub deposuna HTTPS kullanılarak SSH'den daha evrensel olarak erişilebilir.

Benim görüşüme göre SSH anahtarları onları oluşturmak için ekstra bir işe değer

1) SSH Anahtarları GitHub hesabınıza erişim sağlamaz, bu nedenle anahtarınız çalınırsa hesabınız ele geçirilemez,

2) SSH anahtarınızla güçlü bir anahtar sözcük kullanmak, anahtarınız çalınsa bile yanlış kullanımı sınırlar

GitHub hesap kimlik bilgileriniz (kullanıcı adı / şifre) çalınırsa, GitHub şifreniz sizi erişiminizi engelleyecek şekilde değiştirilebilir ve tüm paylaşılan depolarınız hızlı bir şekilde silinebilir.

Özel bir anahtar çalınırsa, birisi boş bir deponun zorla itilmesini sağlayabilir ve sahip olduğunuz her bir havuz için tüm değişiklik geçmişini silebilir, ancak GitHub hesabınızdaki hiçbir şeyi değiştiremez. GitHub hesabınıza erişiminiz olan bu ihlalden kurtarmayı denemek çok daha kolay olacaktır.

Benim tercihim SSH'yi parola korumalı bir anahtarla kullanmaktır. Her bilgisayar için farklı bir SSH anahtarım var, bu yüzden makine çalınır veya anahtar tehlikeye girerse, GitHub'a hızlı bir şekilde giriş yapabilir ve istenmeyen erişimi önlemek için bu anahtarı silebilirim.

Bulunduğunuz ağ SSH bağlantı noktasını engelliyorsa, SSH HTTPS üzerinden tünellenebilir.

https://help.github.com/articles/using-ssh-over-the-https-port/

HTTPS kullanıyorsanız, hesabınızı ve depolarınızı korumak için iki faktörlü kimlik doğrulama eklemenizi öneririm.

HTTPS'yi bir araçla (örneğin bir düzenleyici) kullanıyorsanız, bu araç yapılandırmasında önbellek kullanıcı adı ve şifresi yerine GitHub hesabınızdan bir geliştirici belirteci kullanmanız gerekir.


3
"Birisi özel anahtarınızı ele geçirse de, boş bir deponun zorla itmesini sağlayabilir ve değişiklik geçmişinizi silebilir" - evet (ve korkunç olurdu), ancak dağıtılmış kod tabanlarının güzelliği, en azından bir kopyası var.
Cameron

Birinin zorlamayı zorlayabildiğini SSH ve HTTPS arasında bir farklılaştırıcı olduğundan emin değilim. Eğer kullanıcı adınız ve şifreniz olsaydı, aynı şekilde zorla girebilirim.
Matt Canty

Kullanıcı adınız ve şifreniz varsa her şeyi silebilirsiniz (elbette şifreyi ve e-posta iletişimini değiştirdikten sonra). Sadece silebilirseniz, her bir havuzu tek tek zorlamaya gerek yoktur.
jr0cket

https bağlantısı özel bir belirteç gerektirirken, parola ile ssh anahtarını karşılaştırıyorsunuz.
Alexey Sh.

13

Ya yanlış alıntı yapıyorsunuz ya da github'ın farklı sayfalarda farklı önerileri var ya da zamanla öğrenip reco'larını güncelleyebilirler.

GitHub ile etkileşime girerken bir SSH bağlantısı kullanmanızı önemle tavsiye ederiz. SSH anahtarları, şifreleri içermeden güvenilir bilgisayarları tanımlamanın bir yoludur. Aşağıdaki adımlar, bir SSH anahtarı oluşturma ve ardından ortak anahtarı GitHub hesabınıza ekleme konusunda size yol gösterecektir.

https://help.github.com/articles/generating-ssh-keys


22
FWIW, bu sayfa artık bu cevapta alıntılanan "şiddetle tavsiye" metnini içermiyor.
Scott Isaacs

Hala aşağıdaki bağlantıda HTTPS için "önerilen" i kullanın: help.github.com/articles/which-remote-url-should-i-use/… "HTTPS URL'leriyle klonlama (önerilir)"
JBE

10

Güvenlik duvarı tarafından engellendiyse HTTPS üzerinden SSH bağlantılarını etkinleştirme

HTTPS bağlantı noktası üzerinden SSH'nin mümkün olup olmadığını test edin, bu SSH komutunu çalıştırın:

$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

Eğer işe yaradıysa, harika! Değilse, sorun giderme kılavuzumuzu izlemeniz gerekebilir .

SSH'yi 443 numaralıgit@ssh.github.com bağlantı noktası üzerinden SSH yapabiliyorsanız, GitHub'a yapılan herhangi bir bağlantıyı bu sunucu ve bağlantı noktası üzerinden çalışmaya zorlamak için SSH ayarlarınızı geçersiz kılabilirsiniz.

Bunu ssh config'inizde ayarlamak için, adresindeki dosyayı düzenleyin ~/.ssh/configve bu bölümü ekleyin:

Host github.com
  Hostname ssh.github.com
  Port 443

GitHub'a bir kez daha bağlanarak bunun çalışıp çalışmadığını test edebilirsiniz:

$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

Gönderen doğrulanırken GitHub'dan için / HTTPS bağlantı noktası üzerinden SSH Kullanımı


9

Ayrıca bkz: resmi Hangi uzak URL'yi kullanmalıyım? help.github.com adresinde yanıt.

DÜZENLE:

SSH URL'sini kullanmak için genel bir repo yazma erişimine sahip olmak artık gerekli görünmüyor ve bu da orijinal açıklamamı geçersiz kılıyor.

ORİJİNAL:

Görünüşe göre HTTPS URL'lerini tercih etmenin ana nedeni, bu repoya yazma erişiminiz yoksa SSH URL'lerinin halka açık bir repo ile çalışmayacağıdır.

SSH URL'lerinin kullanımı, üretim sunucularına dağıtım için teşvik edilir, ancak muhtemelen buradaki bağlam Heroku gibi hizmetlerdir.


1
"Bu URL'ler, SSH üzerinden bir git deposuna erişim sağlar. Bu URL'leri kullanmak için, genel bir depoya yazma erişiminiz veya özel bir depoya herhangi bir erişiminiz olmalıdır. Bu URL'ler, yazma erişiminiz olmayan bir genel havuzla çalışmaz " - BU DOĞRU DEĞİL. Herkes, yazma erişimi olmayan bir SSH URL'si ile halka açık bir repoyu klonlayabilir
Sam

1
@Sam Artık doğru olmayabilir, ama soruyu cevapladığımda doğruydu. Cevabımı değişikliği yansıtacak şekilde düzenledim.
Mark Tye

Aslında. "GitHub, SSH üzerinden HTTPS'yi nasıl öneriyor?" Sorusu saçma olurdu.
Mark Tye

0

Kimlik doğrulaması için SSH anahtarının kullanılmasının daha az güvenli olduğunu iddia etmek mümkündür, çünkü şifrenizi yeni SSH anahtarları ürettiğimizden daha periyodik olarak değiştirme eğilimindeyiz.

SSH anahtarları verildiğinde onurlandırılacakları ömrünü sınırlayan sunucular, kullanıcıları düzenli olarak SSH anahtarlarını yenileme uygulamasına zorlamaya yardımcı olabilir.


Kullanıcıların şifrelerini periyodik olarak değiştirmeleri artık kötü bir tavsiye olarak değerlendiriliyor. İngiltere Hükümetleri görüşü: ncsc.gov.uk/articles/problems-forcing-regular-password-expiry
nazerb

-3

Belki beyninizden bir parola çalmak ve daha sonra bilgisayarınızdan bir anahtar dosyasını çalmak daha zor olduğu için (en azından bilgime göre, belki bazı maddeler zaten veya yöntemler var ama bu sonsuz bir tartışma)? Ve anahtarı parola ile korursanız, o zaman tekrar bir parola kullanırsınız ve aynı sorunlar ortaya çıkar (ancak bazıları daha fazla iş yapmanız gerektiğini iddia edebilir, çünkü anahtarı alıp parolayı kırmanız gerekir).

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.