GNU/Linux >> Tutoriales Linux >  >> Linux

SSH:generar y trabajar con claves ssh

SSH es un protocolo seguro que se utiliza como medio principal para conectarse a servidores Linux de forma remota. Proporciona una interfaz basada en texto al generar un shell remoto. Después de conectarse, todos los comandos que escriba en su terminal local se envían al servidor remoto y se ejecutan allí.

Autenticación

Los clientes generalmente se autentican usando contraseñas o claves SSH. Las contraseñas son menos seguras, por lo que siempre se recomiendan las claves ssh.

Para autenticarse usando claves SSH, un usuario debe tener un par de claves SSH en su computadora local. En el servidor remoto, la clave pública debe copiarse en un archivo dentro del directorio de inicio del usuario en ~/.ssh/authorized_keys . Este archivo contiene una lista de claves públicas, una por línea, que están autorizadas para iniciar sesión en esta cuenta.

Generación de un par de claves SSH

Generar combinación de clave pública/privada

ssh-keygen

# With options (Larger Number of Bits 4096 and file name)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix

# Explicit comment
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix -C citizix_key

Los comandos anteriores generarán un par de claves RSA SSH. Si no se especifica la ubicación del archivo, se ubicarán en el .ssh directorio oculto dentro del directorio de inicio de su usuario. Los archivos predeterminados son:

  • ~/.ssh/id_rsa :La clave privada. ¡NO COMPARTA ESTE ARCHIVO!
  • ~/.ssh/id_rsa.pub :La clave pública asociada. Esto se puede compartir libremente sin consecuencias.

Eliminar o cambiar la frase de contraseña en una clave privada

Si ha generado una frase de contraseña para su clave privada y desea cambiarla o eliminarla, use los siguientes comandos:

ssh-keygen -p

ssh-keygen -p -f ~/.ssh/id_citizix

Ingrese la frase de contraseña anterior que desea cambiar. A continuación, se le pedirá una nueva frase de contraseña, o simplemente presione Intro para dejarla vacía.

Comprobar la huella digital de la clave SSH

Cada par de claves SSH comparte una sola "huella digital" criptográfica que se puede usar para identificar las claves de manera única. Para averiguar la huella digital de una clave SSH, escriba:

ssh-keygen -l

ssh-keygen -l -f ~/.ssh/id_citizix

Copiar su clave SSH pública a un servidor

Copiar la clave pública a un servidor remoto permitirá iniciar sesión sin contraseña:

# This will prompt for a password
ssh-copy-id [email protected]_host

Después de escribir la contraseña, el contenido de su clave ~/.ssh/id_rsa.pub se agregará al final del archivo ~/.ssh/authorized_keys de la cuenta de usuario. Ahora puede iniciar sesión sin contraseña:ssh [email protected]_host

Copiar su clave SSH pública a un servidor sin SSH-Copy-ID

Si no tiene disponible la utilidad ssh-copy-id, pero aún tiene acceso SSH basado en contraseña al servidor remoto, puede copiar el contenido de su clave pública de otra manera.

  1. Copie el contenido en la parte inferior del ~/.ssh/authorized_keys del servidor remoto archivo.

  2. Puede generar el contenido de la clave y canalizarlo al comando ssh. Agregar a ~/.ssh/authorized_keys archivo.

    cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Más trucos

Generar clave ssh pública a partir de una clave privada:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Ejecutar un solo comando en un servidor remoto

ssh [email protected]_host command_to_run

Iniciar sesión en un servidor con un puerto diferente

ssh -p port_num [email protected]_host

Usando un archivo de configuración:

# File ~/.ssh/config
Host remote_alias
    HostName remote_host
    Port port_num

Agregar sus claves SSH a un agente SSH para evitar escribir la frase de contraseña

Si tiene una frase de contraseña en su clave SSH privada, se le pedirá que ingrese la frase de contraseña cada vez que la use para conectarse a un host remoto.

Para evitar tener que hacer esto repetidamente, puede ejecutar un agente SSH. Esta pequeña utilidad almacena su clave privada después de haber ingresado la frase de contraseña por primera vez. Estará disponible mientras dure su sesión de terminal, lo que le permitirá conectarse en el futuro sin volver a ingresar la frase de contraseña.

Para iniciar el Agente SSH, escriba lo siguiente en su sesión de terminal local:

eval $(ssh-agent)

Ahora agregue su clave privada al agente, para que pueda administrar su clave:

ssh-add

ssh-add -f ~/.ssh/id_citizix

Tendrá que ingresar su frase de contraseña (si está configurada). Luego, su archivo de identidad se agrega al agente, lo que le permite usar su clave para iniciar sesión sin tener que volver a ingresar la frase de contraseña nuevamente.

Reenvío de sus credenciales SSH para usar en un servidor

Si desea poder conectarse sin contraseña a un servidor desde otro servidor, deberá reenviar la información de su clave SSH. Esto le permitirá autenticarse en otro servidor a través del servidor al que está conectado, usando las credenciales en su computadora local.

Debe tener su agente SSH iniciado y su clave SSH agregada al agente. Luego conéctese al primer servidor con la opción -A para reenviar sus credenciales al servidor para esta sesión

ssh -A [email protected]_host

Linux
  1. Cómo generar un par de claves SSH (con ejemplos)

  2. Ssh:¿la diferencia entre una clave Openssh y una clave Putty?

  3. Cómo configurar claves SSH en Ubuntu 18.04

  4. claves ssh ssh-agent bash y ssh-add

  5. Genere un par SSH con AES-256-CBC

Cómo configurar claves SSH en Ubuntu 20.04

Conceptos básicos de Linux:cómo crear e instalar claves SSH en el Shell

Gestión de claves SSH con privacyIDEA

Cómo usar una clave SSH con usuarios no root

Genere claves RSA con SSH usando PuTTYgen

Inicie sesión con una clave privada SSH en Linux y macOS