Después de generar una clave pública y una clave privada SSH, hemos de copiar la clave pública del host, en el server al que queremos acceder por medio de clave pública de ese host. Lo podemos hacer con SCP o con ssh-copy-id.
—> Recordemos que la clave pública que copiaremos en el server, la hemos generado desde un host, con el comando ssh-keygen; este comando generará el par de archivos de clave pública y clave privada.
En este artículo:
Tenemos 2 formas de copiar la clave pública SSH:
—> En este caso se trata de copiar un archivo local (la clave pública id_rsa.pub) con scp, desde nuestro host a un host remoto (el server): luego extraeremos el contenido de ese archivo y lo añadiremos al archivo authorized_keys del servidor SSH
scp /home/usuario/.ssh/id_rsa.pub SERVER:/home/usuario
—> También podríamos copiar un archivo desde un equipo remoto al equipo local
scp user@hostname-remoto:/ruta/archivo/origen /ruta/equipo/local
—> Y por último podríamos copiar archivos de un equipo remoto a otro
scp user@hostname-remoto:/ruta/archivo/origen user@hostname-remoto2:/ruta/archivo/destino
Si hemos copiado con scp el archivo de la clave pública SSH (id_rsa.pub) en un directorio del server SSH, luego iniciamos sesión en dicho servidor, y el contenido del archivo id_rsa.pub, lo introducimos con el comando cat (concatenar) dentro del archivo /.ssh/authorized_keys
cat /home/usuario/id_rsa.pub >> /home/usuario/.ssh/authorized_keys
*** cuidado de no usar > porque machacaríamos ( > sobreescribe, mientras que >> añade) el contenido del archivo que hubiese anteriormente. ***
—> La utilidad ssh-copy-id permite enviar directamente la clave pública al server, a su archivo authorized_keys.
ssh-copy-id es un script que usa SSH para introducir las claves públicas dentro del archivo authorized_keys. Podemos encontrarlo en el directorio /bin; su ruta completa es /bin/ssh-copy-id.
Además cambia los permisos del directorio /home del usuario remoto, de su directorio ~/.ssh, y de fichero ~/.ssh/authorized_keys, eliminando los permisos de escritura del grupo, lo que evita que en ocasiones no podamos acceder o escribir en dichos directorios.
ssh-copy-id -i /path/to/key.pub SERVERNAME
Aquí vemos el proceso de copia de clave pública por medio de ssh-copy-id
(desde un host llamado “centos7” copiamos la clave pública al host llamado “centos“).
[root@centos7 ~]# ssh-copy-id -i /root/.ssh/id_rsa centos
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@centos's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'centos'"
and check to make sure that only the key(s) you wanted were added.
Después de copiar las claves públicas, reiniciamos el servicio SSH con:
systemctl restart sshd.service
Ahora ya podemos conectar por ssh y usar la clave pública:
ssh usuario@hostname-remoto
Más info sobre cómo generar y configurar las claves SSH en CentOS 7.