Egyik napról a másikra a vállalati szerver elkezdte tőlem kérni az SSH jelszavamat.
Első lépésként azt ellenőriztem, hogy a kulcsom a szerver .ssh/authorized_keys
oldalán található-e. A kulcsom bent volt, semmi sem változott. Szintén a /etc/ssh/sshd_config
részben semmi sem változott.
Ezután megpróbáltam ezt az eljárást frissen végrehajtani telepített Ubuntu16 szerver. Az öt lépés elvégzése után az új szerver ismételten SSH jelszót kért tőlem.
A ssh-copy-id
paranccsal végre sikerült elérni a kulcs nélküli SSH bejelentkezést, de azt vettem észre, hogy .ssh/authorized_keys
három sora van: az egyik ssh-dss
és 2x ssh-rsa
kezdetű
Most emlékszem, hogy a fenti linkből származó 5 lépéses eljárás a múltban csak egy kulccsal működött.
Változott valami a közelmúltban? Miért nem működik többé a fenti eljárás?
Szerkesztés: Mivel a ssh-copy-id
összesen 3 kulcsot másol .ssh/authorized_keys
ezekbe a kulcsokba a következő fájlokban található:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
ezért soronként töröltem a távoli “s .ssh/authorized_keys
fájlból
törölve ~/.ssh/id_dsa
sor – az automatikus bejelentkezés sikeres volt
törölve ~/.ssh/id_rsa.pub
sor – az automatikus bejelentkezés sikerült
törölve ~/.ssh/sshkey.pub
sor – automatikus bejelentkezés nem sikeres – jelszót kért
Csak a (z) ~/.ssh/sshkey.pub
forrásból származó tartalom szükséges. Miért hasonlítja az SSH a sshkey.pub
és nem id_rsa.pub
, mint az online bemutató példában?
Megjegyzések
Válasz
Úgy tűnik, hogy ssh-copy-id
csupán kényelmi funkció. Ellenőrzi, hogy a kulcsokat már exportálták-e a gépre, létrehozza a .ssh
könyvtárat, ha szükséges, de alapvetően csak hozzáadja a nyilvános kulcsokat a .ssh/authorized_keys
. A ssh-copy-id
egy shell szkript (az openssh-ben), így a kódját (vi `which ssh-copy-id`
) elolvashatja a végén:
[ "$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
A hitelesítés során csak a authorized_keys
elemeket ellenőrizzük. Az openssh dokumentációból :
A ~ / .ssh / Authorized_keys fájl felsorolja a nyilvánosságot a belépéshez engedélyezett kulcsok. Amikor a felhasználó bejelentkezik, az ssh program megmondja a szervernek, hogy melyik kulcspárt szeretné használni a hitelesítéshez. Az ügyfél bebizonyítja, hogy hozzáfér a privát kulcshoz, és a szerver ellenőrzi, hogy a megfelelő nyilvános kulcs jogosult-e a fiók elfogadására.
Remélem, hogy válaszol kérdésed címe “ssh-copy-id versus manual copy id_rsa.pub”. Ez a fájl ~/.ssh/sshkey.pub
nincs, ezért remélem, hogy maga megoldotta a telepítéssel kapcsolatos problémákat. Egyébként igen, egyszerűen másolhatja a nyilvános kulcsot ide: authorized_keys
nem használja a ssh-copy-id
alkalmazást.
ssh -v your-remote-server
kimenetet.