Van de ene op de andere dag begon onze bedrijfsserver mij om mijn SSH-wachtwoord te vragen.
Het eerste dat ik controleerde, was om te zien of mijn sleutel zich in .ssh/authorized_keys
op de server bevond. Mijn sleutel zat erin, er veranderde niets. Ook in /etc/ssh/sshd_config
is er niets veranderd.
Toen probeerde ik deze procedure vers uit te voeren. geïnstalleerde Ubuntu16-server. Na het voltooien van deze 5 stappen, vroeg de nieuwe server me opnieuw om het SSH-wachtwoord.
Het ssh-copy-id
commando heeft eindelijk een sleutelloze SSH login voltooid, maar ik heb gemerkt dat .ssh/authorized_keys
heeft drie regels: een die begint met ssh-dss
en 2x begint met ssh-rsa
Nu herinner ik me dat de procedure van 5 stappen via de bovenstaande link in het verleden werkte met slechts één sleutel.
Is er recentelijk iets veranderd? Waarom werkt de bovenstaande procedure niet meer?
Bewerken: sinds ssh-copy-id
in totaal 3 sleutels naar .ssh/authorized_keys
die sleutels kopieert kan worden gevonden in de volgende bestanden:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
dus ik verwijderde regel voor regel van remote “s .ssh/authorized_keys
bestand
verwijderd ~/.ssh/id_dsa
regel – automatisch inloggen geslaagd
verwijderd ~/.ssh/id_rsa.pub
regel – automatisch inloggen geslaagd
verwijderd ~/.ssh/sshkey.pub
line – auto login niet geslaagd – wachtwoord gevraagd
Alleen inhoud van ~/.ssh/sshkey.pub
is nodig. Waarom SSH sshkey.pub
vergelijkt en niet id_rsa.pub
zoals in het voorbeeld van de online tutorial?
Reacties
Antwoord
Het lijkt erop dat ssh-copy-id
is slechts een gemaksfunctie. Het controleert of de sleutels al naar de machine zijn geëxporteerd, het maakt indien nodig een .ssh
directory aan, maar in feite voegt het alleen openbare sleutels toe aan .ssh/authorized_keys
. ssh-copy-id
is een shellscript (in openssh), dus je kunt de code (vi `which ssh-copy-id`
) uiteindelijk lezen:
[ "$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
Tijdens authenticatie worden alleen authorized_keys
gecontroleerd. Van openssh documentatie :
Het bestand ~ / .ssh / geautoriseerde_keys geeft een overzicht van de openbare sleutels die zijn toegestaan om in te loggen. Wanneer de gebruiker inlogt, vertelt het ssh-programma de server welk sleutelpaar het wil gebruiken voor authenticatie. De client bewijst dat hij toegang heeft tot de private key en de server controleert of de corresponderende publieke sleutel geautoriseerd is om de account te accepteren.
Ik hoop dat dit antwoord geeft de titel van uw vraag “ssh-copy-id versus handmatige kopie id_rsa.pub”. Dit bestand ~/.ssh/sshkey.pub
heb ik niet, dus ik hoop dat je de problemen met je installatie zelf hebt opgelost. Hoe dan ook, ja, je kunt de openbare sleutel gewoon handmatig kopiëren naar authorized_keys
gebruikt geen ssh-copy-id
.
ssh -v your-remote-server
toe aan je vraag.