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-servertil spørsmålet ditt.