ssh-copy-id kontra manuell kopia id_rsa.pub

Från en dag till en annan började vår företagsserver att be mig om mitt SSH-lösenord.

Det första jag kollade var att se om min nyckel fanns i .ssh/authorized_keys på servern. Min nyckel var inne, ingenting förändrades. Även i /etc/ssh/sshd_config har inget förändrats.

Sedan försökte jag göra denna procedur på ny installerade Ubuntu16-servern. Efter att ha slutfört dessa 5 steg frågade den nya servern mig igen om SSH-lösenord.

Kommandot ssh-copy-id har äntligen genomfört nyckellös SSH-inloggning, men jag har märkt att det .ssh/authorized_keys har tre rader: en som börjar med ssh-dss och 2x som börjar med ssh-rsa

Nu kommer jag ihåg att 5 stegs procedur från länken ovan har fungerat tidigare med bara en nyckel.

Har något förändrats nyligen? Varför fungerar proceduren ovanifrån inte längre?

Redigera: Eftersom ssh-copy-id kopierar totalt 3 nycklar till .ssh/authorized_keys dessa nycklar finns i följande filer:

~/.ssh/id_dsa

~/.ssh/sshkey.pub

~/.ssh/id_rsa.pub

så jag raderade rad för rad från fjärr ”s .ssh/authorized_keys -fil

borttagen ~/.ssh/id_dsa rad – automatisk inloggning lyckades

borttagen ~/.ssh/id_rsa.pub rad – automatisk inloggning lyckades

borttagen ~/.ssh/sshkey.pub rad – automatisk inloggning inte lyckades – bad om lösenord

Endast innehåll från ~/.ssh/sshkey.pub är nödvändigt. Varför SSH jämför sshkey.pub och inte id_rsa.pub som i exemplet från online-handledning?

Kommentarer

  • Visst inte på grund av några grundläggande ändringar i filen authored_keys eller jag skulle har vaknat en dag för att befinna mig utanför en hel massa maskiner.
  • vilken typ av nyckel och hur många bitar? servern du ' har problem med kan ha högre standarder, möjligen på grund av en uppgradering av sshd. 1024-bitars RSA brukade anses vara acceptabel. idag krävs 2048 eller 4096 bitar.
  • lägg också till utdata från ssh -v your-remote-server till din fråga.
  • Har du fortfarande 640 flaggor på auktoriserade_tangenter eller något mer begränsande (600)?

Svar

Det verkar som att ssh-copy-id är bara en bekvämlighetsfunktion. Det kontrollerar om nycklarna redan exporterades till maskinen, det skapar .ssh katalog om det behövs, men i grund och botten lägger det bara till offentliga nycklar till .ssh/authorized_keys . ssh-copy-id är ett skalskript (i openssh), så du kan läsa dess kod (vi `which ssh-copy-id`) till slut:

[ "$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 

Endast authorized_keys under autentisering kontrolleras. Från openssh dokumentation :

Filen ~ / .ssh / author_keys visar allmänheten nycklar som är tillåtna för inloggning. När användaren loggar in berättar ssh-programmet servern vilket nyckelpar den vill använda för autentisering. Klienten bevisar att den har tillgång till den privata nyckeln och servern kontrollerar att motsvarande offentliga nyckel har rätt att acceptera kontot.

Jag hoppas att det här svarar din frågetitel ”ssh-copy-id versus manual copy id_rsa.pub”. Den här filen ~/.ssh/sshkey.pub Jag har inte, så jag hoppas att du själv har löst problemen med din inställning. Hur som helst, ja, du kan bara manuellt kopiera den offentliga nyckeln till authorized_keys använder inte ssh-copy-id.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *