Fra den ene dag til den anden begyndte vores firmaserver at bede mig om min SSH-adgangskode.
Den første ting, jeg tjekkede, var at se, om min nøgle var inde i .ssh/authorized_keys
på serveren. Min nøgle var inde, intet ændrede sig. Også i /etc/ssh/sshd_config
intet har ændret sig.
Så forsøgte jeg at gøre denne procedure på frisk installeret Ubuntu16-server. Efter at have gennemført disse 5 trin, bad den nye server mig igen om SSH-adgangskode.
Kommandoen ssh-copy-id
har endelig opnået nøglefri SSH-login, men jeg har bemærket, at det .ssh/authorized_keys
har tre linjer: en startende med ssh-dss
og 2x startende med ssh-rsa
Nu kan jeg huske, at 5-trins procedure fra ovenstående link har fungeret tidligere med kun en nøgle.
Er der noget, der er ændret for nylig? Hvorfor fungerer fremgangsmåden ovenfra ikke længere?
Rediger: Da ssh-copy-id
kopierer i alt 3 nøgler til .ssh/authorized_keys
disse nøgler kan findes i følgende filer:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
så jeg slettede linje for linje fra ekstern “s .ssh/authorized_keys
fil
slettet ~/.ssh/id_dsa
linje – automatisk login lykkedes
slettet ~/.ssh/id_rsa.pub
linje – automatisk login lykkedes
slettet ~/.ssh/sshkey.pub
linje – automatisk login ikke lykkedes – bad om adgangskode
Kun indhold fra ~/.ssh/sshkey.pub
er nødvendigt. Hvorfor SSH sammenligner sshkey.pub
og ikke id_rsa.pub
som i eksemplet fra online tutorial?
Kommentarer
Svar
Det ser ud til, at ssh-copy-id
er blot en bekvemhedsfunktion. Det kontrollerer, om nøglerne allerede blev eksporteret til maskinen, det opretter .ssh
katalog, hvis det er nødvendigt, men dybest set tilføjer det bare offentlige nøgler til .ssh/authorized_keys
. ssh-copy-id
er et shell-script (i openssh), så du kan læse dets kode (vi `which ssh-copy-id`
) til sidst:
[ "$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
Under godkendelse kontrolleres kun authorized_keys
. Fra openssh dokumentation :
Filen ~ / .ssh / autoriseret_keys viser offentligheden nøgler, der er tilladt til at logge på. Når brugeren logger på, fortæller ssh-programmet serveren, hvilket nøglepar det vil bruge til godkendelse. Klienten beviser, at den har adgang til den private nøgle, og serveren kontrollerer, at den tilsvarende offentlige nøgle er autoriseret til at acceptere kontoen.
Jeg håber, at dette svar dit spørgsmålstitel “ssh-copy-id versus manual copy id_rsa.pub”. Denne fil ~/.ssh/sshkey.pub
Jeg har det ikke, så jeg håber, du selv har løst problemerne med din opsætning. Under alle omstændigheder kan du bare manuelt kopiere den offentlige nøgle til authorized_keys
bruger ikke ssh-copy-id
.
ssh -v your-remote-server
til dit spørgsmål.