Da un giorno allaltro, il nostro server aziendale ha iniziato a chiedermi la mia password SSH.
La prima cosa che ho controllato è stato di vedere se la mia chiave era allinterno di .ssh/authorized_keys
sul server. La mia chiave era dentro, non è cambiato nulla. Anche in /etc/ssh/sshd_config
non è cambiato nulla.
Quindi ho provato a eseguire questa procedura di recente server Ubuntu16 installato. Dopo aver completato questi 5 passaggi, il nuovo server mi ha chiesto di nuovo la password SSH.
Il comando ssh-copy-id
ha finalmente completato laccesso SSH senza chiave, ma ho notato che .ssh/authorized_keys
ha tre righe: una che inizia con ssh-dss
e 2x che inizia con ssh-rsa
Ora ricordo che la procedura in 5 passaggi dal link sopra ha funzionato in passato con una sola chiave.
È cambiato qualcosa di recente? Perché la procedura dallalto non funziona più?
Modifica: poiché ssh-copy-id
copia in tutto 3 chiavi per .ssh/authorized_keys
quelle chiavi può essere trovato nei seguenti file:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
quindi ho eliminato riga per riga dal file “s .ssh/authorized_keys
remoto
riga ~/.ssh/id_dsa
cancellata – login automatico riuscito
riga ~/.ssh/id_rsa.pub
cancellata – login automatico riuscito
riga ~/.ssh/sshkey.pub
eliminata – accesso automatico non riuscito – password richiesta
Sono necessari solo i contenuti di ~/.ssh/sshkey.pub
. Perché SSH confronta sshkey.pub
e non id_rsa.pub
come nellesempio dal tutorial online?
Commenti
Answer
Sembra che ssh-copy-id
è semplicemente una funzione utile. Controlla se le chiavi sono già state esportate sulla macchina, crea la directory .ssh
se necessario, ma fondamentalmente aggiunge le chiavi pubbliche a .ssh/authorized_keys
. ssh-copy-id
è uno script di shell (in openssh), quindi puoi leggerne il codice (vi `which ssh-copy-id`
) alla fine:
[ "$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
Durante lautenticazione vengono selezionati solo authorized_keys
. Dalla documentazione di openssh:
Il file ~ / .ssh / authorized_keys elenca il pubblico chiavi che sono consentite per il login. Quando lutente effettua il login, il programma ssh dice al server quale coppia di chiavi vorrebbe usare per lautenticazione. Il client dimostra di avere accesso alla chiave privata e il server verifica che la chiave pubblica corrispondente sia autorizzata ad accettare laccount.
Spero che questo risponda il titolo della tua domanda “ssh-copy-id contro manual copy id_rsa.pub”. Questo file ~/.ssh/sshkey.pub
non ce lho, quindi spero che tu abbia risolto i problemi con la configurazione da solo. Ad ogni modo, sì, puoi semplicemente copiare manualmente la chiave pubblica su authorized_keys
non utilizza ssh-copy-id
.
ssh -v your-remote-server
alla tua domanda.