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.
-
Copie el contenido en la parte inferior del
~/.ssh/authorized_keys
del servidor remoto archivo. -
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