Copiar clave pública SSH a un server Linux | SCP y ssh-copy-id

Vamos a ver cómo copiar una clave pública SSH con scp o con ssh-copy-id, al server Linux donde queremos acceder por medio de publickey, sin usar password.

 
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:

 

 

COPIAR LA CLAVE PÚBLICA DESDE EL HOST REMOTO AL SERVIDOR SSH

 
Tenemos 2 formas de copiar la clave pública SSH:
 

 

 

  • Copiar clave pública SSH por medio de SCP

—> 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

 

scp copiar clave publica

 
 

—> 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

 

 

Tras copiar la clave pública en el host remoto por medio de scp, hemos añadirla a su archivo authorized_keys del server SSH

 

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. ***
 
concatenar clave publica al archivo authorized keys
 

 

  • Copiar clave pública SSH por medio de ssh-copy-id

     

    —> 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

     
    ssh copy id
     

    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.

     

     

    Reiniciar SSH

     
    Después de copiar las claves públicas, reiniciamos el servicio SSH con:

    systemctl restart sshd.service

     

     

    Comprobar acceso SSH con clave publica

     
    Ahora ya podemos conectar por ssh y usar la clave pública:

    ssh usuario@hostname-remoto

     
    comprobar acceso clave publica al server linux
     
    Más info sobre cómo generar y configurar las claves SSH en CentOS 7.