Sono pigro a casa e uso l'autenticazione tramite password per le mie macchine domestiche. Sono pronto a passare all'autenticazione basata sulla chiave. Ci sono molte opzioni sul web su come farlo, compreso il catting e poi lo sshing della chiave, lo scping della chiave direttamente, ecc.
Sto cercando il modo più semplice e raccomandato per copiare una chiave, sperando che ci sia un wrapper di convenienza da qualche parte nel pacchetto ssh di Ubuntu?
Sono già a conoscenza di come spegnere i login con password.
Il comando ssh-copy-id
(nel pacchetto openssh-client e installato di default) fa esattamente questo:
ssh-copy-id [email protected]
copia la chiave pubblica della vostra identità predefinita (usate -i identity_file
per altre identità) sull'host remoto.
L'identità predefinita è la tua chiave "standard" ssh. Consiste di due file (chiave pubblica e privata) nella tua directory ~/.ssh
, normalmente chiamata identity
, id_rsa
, id_dsa
, id_ecdsa
o id_ed25519
(e lo stesso con .pub
), a seconda del tipo di chiave. Se non hai creato più di una chiave ssh, non devi preoccuparti di specificare l'identità, ssh-copy-id la sceglierà automaticamente.
Nel caso non abbiate un'identità, potete generarne una con lo strumento ssh-keygen
.
Inoltre, se il server usa una porta diversa da quella predefinita (22
) si dovrebbero usare le virgolette in questo modo (fonte):
ssh-copy-id "[email protected] -p <port-number>"
Mi piace la risposta di Marcel. Non conoscevo questo comando. Ho sempre usato quello che avevo trovato sul sito web Oracle:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Ho pensato di postarlo ancora qui, perché è una buona illustrazione di ciò che si può ottenere nel codice della shell con la potenza di ssh
. Ma usare il ssh-copy-id
è definitivamente un modo più sicuro per farlo correttamente!
Si noti che se la cartella .ssh
non esiste già, il comando di cui sopra fallirà. Inoltre, potrebbe essere meglio quando si crea il file impostare un permesso minimo possibile (fondamentalmente lettura-scrittura solo per il proprietario). Ecco un comando più avanzato:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'