Nella crittografia asimmetrica, ognuno ha le chiavi pubbliche e solo l'entità che viene verificata dalla chiave pubblica ha la chiave privata. La chiave pubblica e la chiave privata sono collegate in modo tale che la chiave pubblica non rivela nulla sulla chiave privata, ma che il titolare della chiave privata può dimostrare la propria identità facendo verificare a qualcuno una sfida utilizzando la chiave pubblica.
Fondamentalmente, qualcosa che viene crittografato con una chiave pubblica può essere decifrato solo dalla chiave privata e qualcosa che viene crittografato con la chiave privata può essere decifrato solo con la chiave pubblica.
Per dimostrare che il server è quello che sostengono di essere, crittografano una sfida con la loro chiave privata (che solo loro hanno) e la chiave pubblica viene utilizzata per verificare che la sfida possa essere decifrata, quindi l'altra parte ha il privato chiave.
Per parlare in modo sicuro con il server, la chiave pubblica viene utilizzata per crittografare una chiave di sessione simmetrica. Quella chiave di sessione è crittografata con la chiave pubblica e inviata al server. Solo il server valido (che ha la chiave privata) può decodificare la chiave di sessione, in modo che solo il client (che ha creato la chiave di sessione) e il server con la chiave privata possano comunicare.
La chiave pubblica è attendibile dal client perché è firmata in modo simile da un'autorità di certificazione radice inclusa nel browser.
Aggiornamento: ho interpretato erroneamente la domanda come SSL, non SSH. L'idea di base è ancora più o meno la stessa, ma il certificato del server spesso non verrà firmato da una CA, nel qual caso il certificato deve essere verificato manualmente la prima volta dopo il quale il client deve tenere traccia di chi è stato connesso all'ultima volta . Lo scambio di chiavi differisce anche in base a come viene concordata una chiave, ma non conosco le strette di mano SSH e conosco le SSL, quindi vedi la risposta di Thomas Pornin per questo.