Fra en dag til en annen begynte firmaets server å be meg om SSH-passordet mitt.
Det første jeg sjekket var å se om nøkkelen min var inne i .ssh/authorized_keys
på serveren. Nøkkelen min var inne, ingenting forandret seg. Også i /etc/ssh/sshd_config
har ingenting endret seg.
Så prøvde jeg å gjøre denne prosedyren på fersk installert Ubuntu16-server. Etter å ha fullført disse 5 trinnene, spurte den nye serveren meg igjen om SSH-passord.
ssh-copy-id
-kommandoen har endelig fullført nøkkelfri SSH-pålogging, men jeg har lagt merke til at den .ssh/authorized_keys
har tre linjer: en starter med ssh-dss
og 2x starter med ssh-rsa
Nå husker jeg at fremgangsmåten i fem trinn fra lenken ovenfor har fungert tidligere med bare én nøkkel.
Har noe endret seg nylig? Hvorfor fungerer fremgangsmåten ovenfra ikke lenger?
Rediger: Siden ssh-copy-id
kopierer totalt 3 nøkler til .ssh/authorized_keys
disse tastene finner du i følgende filer:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
så jeg slettet linje for linje fra ekstern «s .ssh/authorized_keys
fil
slettet ~/.ssh/id_dsa
linje – automatisk innlogging lykkes
slettet ~/.ssh/id_rsa.pub
linje – automatisk innlogging lykkes
slettet ~/.ssh/sshkey.pub
linje – automatisk pålogging ikke lyktes – ba om passord
Bare innhold fra ~/.ssh/sshkey.pub
er nødvendig. Hvorfor SSH sammenligner sshkey.pub
og ikke id_rsa.pub
som i eksemplet fra online tutorial?
Kommentarer
Svar
Det ser ut til at ssh-copy-id
er bare en praktisk funksjon. Den sjekker om nøklene allerede ble eksportert til maskinen, den oppretter .ssh
katalog om nødvendig, men i utgangspunktet legger den bare til offentlige nøkler til .ssh/authorized_keys
. ssh-copy-id
er et skallskript (i openssh), slik at du til slutt kan lese koden (vi `which ssh-copy-id`
):
[ "$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 autentisering blir bare authorized_keys
kontrollert. Fra openssh dokumentasjon :
Filen ~ / .ssh / autoriserte_taster viser publikum nøkler som er tillatt for innlogging. Når brukeren logger på, forteller ssh-programmet serveren hvilket nøkkelpar den vil bruke til autentisering. Klienten beviser at den har tilgang til den private nøkkelen og serveren sjekker at den tilhørende offentlige nøkkelen er autorisert til å godta kontoen.
Jeg håper dette svarer spørsmålstittelen din «ssh-copy-id versus manual copy id_rsa.pub». Denne filen ~/.ssh/sshkey.pub
Det har jeg ikke, så jeg håper du har løst problemene med oppsettet ditt selv. Uansett, ja, du kan bare kopiere den offentlige nøkkelen manuelt til authorized_keys
bruker ikke ssh-copy-id
.
ssh -v your-remote-server
til spørsmålet ditt.