Perché GitHub consiglia HTTPS su SSH?

Sul sito GitHub c’è un link …

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

… e afferma …

Se hai deciso di non utilizzare il metodo HTTPS consigliato, possiamo usare le chiavi SSH per stabilire una connessione sicura tra il tuo computer e GitHub. I passaggi seguenti ti guideranno attraverso la generazione di una chiave SSH e quindi aggiungendo la chiave pubblica al tuo account GitHub.

Perché HTTPS è il metodo consigliato? C’è qualche tipo di falla nella sicurezza nel metodo SSH o è più lento? Ho creato una chiave SSH, in modo da mitigare eventuali problemi di sicurezza?

GitHub ha cambiato le loro raccomandazioni più volte ( esempio ).

Sembra che attualmente raccomandino HTTPS perché è il più semplice da configurare sulla più ampia gamma di reti e piattaforms e dagli utenti che sono nuovi a tutto questo.

Non ci sono difetti intrinseci in SSH (se ce ne fossero disabilitati) – nei link sotto, vedrai che forniscono ancora dettagli sulle connessioni SSH:

  1. HTTPS ha meno probabilità di essere bloccato da un firewall.

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

    Gli https: // clone URL sono disponibili su tutti i repository, pubblici e privati. Questi URL funzionano ovunque, anche se sei dietro un firewall o un proxy.

  2. Una connessione HTTPS consente a credential.helper di memorizzare la password in cache.

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

    Buono a sapersi: l’helper delle credenziali funziona solo quando cloni un URL repo HTTPS. Se si utilizza l’URL del repository SSH, le chiavi SSH vengono utilizzate per l’autenticazione. Anche se non lo consigliamo, se desideri utilizzare questo metodo, consulta questa guida per aiuto nella generazione e nell’uso di una chiave SSH.

HTTPS è raccomandato da Github perché è una porta aperta in tutti i firewall. SSH non è sempre aperto come porta per le comunicazioni su una rete ed è spesso bloccato dai firewall di rete.

Un repository Github è quindi più universalmente accessibile tramite HTTPS rispetto a SSH.

Le chiavi SSH sono più sicure in quanto non forniscono l’accesso al tuo account Github, anche se se qualcuno riesce a ottenere la tua chiave privata, possono fare un push forzato di un repository vuoto e cancellare la cronologia delle modifiche.

La mia preferenza è usare SSH con una chiave protetta da passphrase. SSH può essere tunnelato su HTTPS se la rete in cui ti trovi blocca la porta SSH.

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

Se utilizzi HTTPS, ti consiglio di aggiungere l’autenticazione a due fattori, per proteggere il tuo account e i tuoi archivi.

O stai citando erroneamente o github ha raccomandazioni diverse su pagine diverse o potrebbero aver imparato con il tempo e aggiornato la loro reco.

Si consiglia vivamente di utilizzare una connessione SSH durante l’interazione con GitHub. Le chiavi SSH sono un modo per identificare i computer fidati, senza coinvolgere le password. I passaggi seguenti ti guideranno attraverso la generazione di una chiave SSH e quindi aggiungendo la chiave pubblica al tuo account GitHub.

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

Vedi anche: il funzionario Quale URL remoto dovrei usare? rispondi su help.github.com.

MODIFICARE:

Sembra che non sia più necessario avere accesso in scrittura a un repository pubblico per utilizzare un URL SSH, rendendo la mia spiegazione originale non valida.

ORIGINALE:

Apparentemente il motivo principale per cui si preferiscono gli URL HTTPS è che l’URL SSH non funzionerà con un repository pubblico se non si dispone dell’accesso in scrittura a tale repository.

L’uso di URL SSH è incoraggiato per l’implementazione su server di produzione, tuttavia – presumibilmente il contesto qui è servizi come Heroku.

Abilitazione delle connessioni SSH su HTTPS se è bloccato dal firewall

Verificare se SSH sulla porta HTTPS è ansible, eseguire questo comando SSH:

 $ ssh -T -p 443 [email protected] Hi username! You've successfully authenticated, but GitHub does not provide shell access. 

Se ha funzionato, fantastico! In caso contrario, potrebbe essere necessario seguire la nostra guida alla risoluzione dei problemi .

Se si è in grado di eseguire SSH in [email protected] tramite la porta 443 , è ansible sovrascrivere le impostazioni SSH per forzare l’esecuzione di qualsiasi connessione a GitHub tramite quel server e quella porta.

Per impostare questo nella tua ssh config, modifica il file in ~/.ssh/config e aggiungi questa sezione:

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

Puoi verificare che funzioni collegando ancora una volta a GitHub:

 $ ssh -T [email protected] Hi username! You've successfully authenticated, but GitHub does not provide shell access. 

Da Autenticazione a GitHub / Utilizzo di SSH sulla porta HTTPS

È ansible affermare che l’uso della chiave SSH per l’autenticazione è meno sicuro perché tendiamo a modificare la nostra password più periodicamente rispetto a quando generiamo nuove chiavi SSH.

I server che limitano la durata della vita per la quale onoreranno le chiavi SSH possono aiutare gli utenti a eseguire periodicamente l’aggiornamento delle chiavi SSH.

Forse perché è più difficile rubare una password dal tuo cervello e poi rubare un file chiave dal tuo computer (almeno per quello che so, forse alcune sostanze esistono già o metodi ma questa è una discussione infinita)? E se proteggi la chiave con la password, allora stai usando di nuovo una password e si presentano gli stessi problemi (ma alcuni potrebbero obiettare che devi fare più lavoro, perché devi prendere la chiave e poi crackare la password).