Două mașini sunt în imagine pentru problema mea:
- Server: rulează Ubuntu Server 20.04.3 LTS, rulează serverul ssh
- Client: rulează Ubuntu Desktop 20.04.3 LTS, rulează client ssh
Mă aștept să fie folosită perechea de chei ED25519 generată. Cheile sunt stocate după cum urmează:
- id_ed25519.pub: atașat în ~/.ssh/authorized_keys pe „server”
- id_ed25519: stocat în ~/.ssh pe „client”
Configurare pe server în /etc/ssh/sshd.config:
- PubkeyAuthentication da
- AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
- PasswordAuthentication nr
Configurare pe client:
- id_ed25519 este disponibil prin breloc
(executând ssh-add pentru ssh-agent, cerând expresia de acces corect)
Acum ce mă dă bătăi de cap:
Pasul 1: Mă conectez de la client la server. Când accesez pentru prima dată (~/.ssh/known_hosts goale pe client) primesc:
Amprenta cheii ECDSA este SHA256: [DefaultKeyFingerprint]. Sigur doriți să continuați conectarea?
[DefaultKeyFingerprint] este un substituent pentru amprenta afișată. Se pare că nu este amprenta la care mă așteptam. Așteptările mele a fost: id_ed25519.pub este folosit de server pentru a obține amprenta. Acest lucru ar duce la o altă amprentă (verificată prin „ssh-keygen -l -f”). Să-l numim pe acesta [ExpectedFingerprint].
Am încercat să înțeleg de unde vine [DefaultKeyFingerprint]. Rezultat:
Se potrivește cu cheia implicită ssh_host_ecdsa_key.pub generată de sshd în /etc/ssh/
Pasul 2: După ce accept avertismentul menționat mai sus, mă pot conecta cu succes.
Am vrut să înțeleg dacă a fost folosită cheia publică din spatele [DefaultKeyFingerprint] sau [ExpectedFingerprint]. Două indicații că [ExpectedFingerprint] a fost folosită:
- Specificarea cheii private din spatele [DefaultKeyFingerprint] atunci când se execută „ssh” pe client nu este acceptată de „Server”, chiar și atunci când fișierul cheii private este specificat folosind opțiunea -i. Eroare este:
Permisiune refuzată (cheie publică).
Acest lucru se potrivește așteptărilor mele, deoarece am permis pe partea serverului în ~/.ssh/authorized_keys doar cheia publică care se potrivește la [ExpectedFingerprint]
- Când rulez pe „Server”:
starea systemctl ssh
după conectare cu succes, primesc următoarea rezultat:
Dez 22 10:57:42 [my_machine] sshd[3255]: Cheie acceptată ED25519 SHA256:[ExpectedFingerprint] găsită la ~/.ssh/authorized_keys:1
Dez 22 10:57:42 [my_machine] sshd[3255]: cheie publică acceptată pentru [utilizator] de la 192.168.178.35 portul 50048 ssh2: ED25519 SHA256:[ExpectedFingerprint]
Dez 22 10:57:42 [my_machine] sshd[3255]: pam_unix(sshd:session): sesiune deschisă pentru utilizatorul [user] de (uid=0)
Intrebarile mele:
- Puteți confirma argumentația mea de mai sus că de fapt a fost folosită [ExpectedFingerprint]?
- De ce se afișează „Server” ca amprentă [DefaultKeyFingerprint] și nu [ExpectedFingerprint] și cum pot face ca „Server” să afișeze [ExpectedFingerprint]?
Observații - neștiind dacă contează:
Când am generat perechea de chei care duce la [ExpectedFingerprint], am specificat un asterix în numele domeniului *.mydomain.com. Ieșirea ssh-keygen -l -f pentru ambele chei publice:
256 SHA256:[ExpectedFingerprint] *.mydomain.com (ED25519)
256 SHA256:[DefaultKeyFingerprint] root@mymachine (ECDSA)
Mulțumesc anticipat pentru gândurile tale.