tl; dr : No, non funzionerà. Il fatto che il server conosca la tua chiave pubblica non autentica il server, anche se cerchi di mantenere segreta la chiave pubblica.
This seems to be preventable if git uses the repository's deploy keys or the user's ssh-keys for encrypting the connection
Diversi problemi qui:
-
git
non ha un concetto come "chiave di distribuzione del repository", fa parte di GitLab. Sembra essere semplicemente una chiave pubblica configurata per consentire l'accesso in sola lettura al repository, destinato all'uso nella distribuzione del codice (potresti già capirlo, ma la tua domanda non mi è completamente chiara).
- Usando la tua chiave
ssh
per connettersi a qualcosa autentica tu provando che hai la chiave privata. Non autentica il server. Questo è il motivo per cui le chiavi host sono necessarie.
-
Le chiavi
ssh
non vengono utilizzate per crittografare la connessione, solo per autenticare una connessione sicura già stabilita (stabilire la connessione protetta è una parte separata del protocollo ssh)
Le chiavi pubbliche sono chiamate pubbliche per un motivo, dovresti mai presumere che sia privato anche se lo hai appena generato per aggiungerlo a GitLab su HTTPS e non usalo da qualsiasi altra parte.
L'autenticazione
ssh
comporta l'invio della chiave pubblica al server per vedere se è consentita (chiamata "chiave blob pubblica" in RFC 4252 sezione 7 ). Questo viene fatto dopo aver stabilito una connessione sicura in modo che non possa essere intercettato, ma non importa se la sessione è stata stabilita con un server malevolo. Un impostore potrebbe semplicemente rispondere con "Perché sì, io accetterò quella chiave per autenticare quell'utente!" e fartelo pensare che è il server legittimo. Il solo modo corretto per autenticare un server con ssh
è utilizzando la sua chiave host.