De la o zi la alta, serverul companiei noastre a început să-mi ceară parola SSH.
Primul lucru pe care l-am verificat a fost să văd dacă cheia mea se afla în .ssh/authorized_keys
pe server. Cheia mea era înăuntru, nimic nu s-a schimbat. De asemenea, în /etc/ssh/sshd_config
nimic nu s-a schimbat.
Apoi am încercat să fac această procedură pe proaspăt serverul Ubuntu16 instalat. După ce am parcurs acești 5 pași, noul server mi-a cerut din nou parola SSH.
Comanda ssh-copy-id
a reușit în cele din urmă conectarea SSH fără cheie, dar am observat că .ssh/authorized_keys
are trei linii: una începând cu ssh-dss
și 2x începând cu ssh-rsa
Acum îmi amintesc că procedura în 5 pași de la linkul de mai sus a funcționat în trecut cu o singură cheie.
S-a schimbat ceva recent? De ce procedura de mai sus nu mai funcționează?
Editați: Deoarece ssh-copy-id
copiază în total 3 taste la .ssh/authorized_keys
acele chei poate fi găsit în următoarele fișiere:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
așa că am șters rând cu rând din fișierul „s .ssh/authorized_keys
de la distanță
șters ~/.ssh/id_dsa
linie – autentificare automată reușită
ștearsă ~/.ssh/id_rsa.pub
linie – autentificare automată reușită
șters ~/.ssh/sshkey.pub
linie – autentificare automată nu a reușit – s-a solicitat parola
Este necesar doar conținutul din ~/.ssh/sshkey.pub
. De ce SSH compară sshkey.pub
și nu id_rsa.pub
ca în exemplul din tutorialul online?
Comentarii
Răspuns
Se pare că ssh-copy-id
este doar o funcție de comoditate. Verifică dacă cheile au fost deja exportate pe mașină, creează directorul .ssh
dacă este necesar, dar practic adaugă doar chei publice la .ssh/authorized_keys
. ssh-copy-id
este un script shell (în openssh), astfel încât să puteți citi codul acestuia (vi `which ssh-copy-id`
) la final:
[ "$DRY_RUN" ] || printf "%s\n" "$NEW_IDS" | \ ssh "$@" "exec sh -c "cd ; umask 077 ; mkdir -p .ssh && { [ -z ""`tail -1c .ssh/authorized_keys 2>/dev/null`"" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"" \ || exit 1
În timpul autentificării sunt verificate numai authorized_keys
. Din openssh documentație :
Fișierul ~ / .ssh / authorized_keys listează publicul chei care sunt permise pentru conectare. Când utilizatorul se conectează, programul ssh îi spune serverului ce pereche de chei ar dori să utilizeze pentru autentificare. Clientul demonstrează că are acces la cheia privată și serverul verifică dacă cheia publică corespunzătoare este autorizată să accepte contul.
Sper că acest lucru răspunde titlul întrebării dvs. „ssh-copy-id versus manual copy id_rsa.pub”. Acest fișier ~/.ssh/sshkey.pub
nu am, așa că sper că ați rezolvat singur problemele cu configurarea dvs. Oricum, da, puteți copia manual manual cheia publică în authorized_keys
nu utilizează ssh-copy-id
.
ssh -v your-remote-server
la întrebarea dvs.