El protocolo Secure Shell (SSH) es quizás el medio más conocido para realizar una conexión segura entre una máquina cliente (su computadora portátil, teléfono o computadora de escritorio) y un servidor remoto en una oficina, centro de datos o en su red doméstica. Es probable que use SSH si desea acceder a la línea de comandos en su servicio de alojamiento web o en una Raspberry Pi sin interfaz gráfica de usuario. SSH está disponible de alguna forma para casi todos los sistemas operativos y, a menudo, está integrado en el sistema operativo.
La mayoría de los servidores le dan la opción de conectarse a SSH a través de una contraseña o mediante claves SSH, que son más seguras. El método de clave SSH utiliza claves públicas y privadas generadas criptográficamente para crear una conexión cifrada entre dispositivos.
Nuestra clave pública se almacena en la máquina remota y una clave privada se almacena en nuestra máquina. Las dos claves SSH son necesarias para realizar una conexión segura. Las claves también se pueden usar con frases de contraseña para agregar otro nivel de seguridad, pero también se pueden usar sin ellas, por ejemplo, en procesos automatizados.
En este tutorial, aprenderemos cómo crear claves SSH usando PuTTY, el cliente SSH más popular, y en el Símbolo del sistema de Windows/Terminal de Linux.
Preparación del servidor remoto para claves SSH
Nuestra máquina remota puede estar en un centro de datos administrado por un servicio de alojamiento web, en nuestra oficina o en casa. Por lo general, los servidores Linux, como VPS y alojamiento en la nube, tendrán SSH ejecutándose de forma predeterminada, utilizando contraseñas para inicios de sesión seguros. Si este no es el caso, deberá habilitar SSH a través del panel de control para su VPS / servicio en la nube. Si está utilizando un servidor doméstico, es posible que no esté instalado. Si ese es el caso, siga estos pasos antes de continuar.
1. Abra una terminal y busque un servicio SSH en ejecución en la máquina. Si el servicio SSH se está ejecutando, devolverá Activo: activo (en ejecución).
sudo service ssh status
2. En el servidor físico, abra una terminal e instale OpenSSH Server. Deberá sentarse frente a la máquina para emitir estos comandos.
sudo apt update
sudo apt install openssh-server
3. Inicie el servicio SSH.
sudo service ssh start
4. En su directorio de inicio, cree un directorio oculto llamado .ssh.
mkdir .ssh
5. Cierre la conexión presionando CTRL+D o escribiendo exit y presionando Enter.
Uso de PuTTY para conectarse a un servidor remoto mediante claves SSH
PuTTY es una aplicación para crear y administrar SSH y conexiones seriales a dispositivos. PuTTY viene con su propia aplicación generadora de claves y en esta parte del procedimiento crearemos una clave pública para nuestro servidor remoto y una clave privada en nuestro dispositivo de confianza.
1. Descarga e instala PuTTY. Windows tiene su propio símbolo del sistema, que se puede usar con SSH, pero PuTTY es, con mucho, el medio más accesible para abrir una conexión SSH.
2. Busque puttygen y abra la aplicación.
3. Haga clic en RSA y establezca los bits en 4096. Haga clic en Generar para crear una clave.
4. Mueva el mouse alrededor del área en blanco del cuadro de diálogo para generar una semilla aleatoria para la clave.
5. Cree una frase de contraseña para la clave. Esto se recomienda para las claves SSH que se utilizarán en sesiones interactivas.
6. Guarde la clave pública como id_rsa_putty.pub en una carpeta llamada .ssh.
7. Guarde la clave privada como id_rsa_putty.ppk. El archivo ppk tiene el formato de clave privada de Putty.
8. Resalte la clave pública y copie el texto.
Copia de la clave pública en el servidor remoto
1. Inicie PuTTY.
2. Introduzca la dirección IP o el nombre de host de su servidor remoto y haga clic en Abrir.
3. Cuando se le solicite, ingrese su nombre de usuario y contraseña para el servidor remoto. Tenga en cuenta que la contraseña no se muestra. Esta es una función de seguridad para evitar el «navegación por el hombro».
4. Usando el editor de texto nano, cree un nuevo archivo llamado authorized_keys en el directorio .ssh.
5. Haga clic derecho y pegue la clave pública (creada en PuTTYGen) en el archivo en blanco. Ahorrar presionando CTRL+X, luego Y y Enter.
6. Salga de la sesión SSH presionando CTRL + D.
7. Vuelva a abrir PuTTY y vaya a SSH >> Autenticación.
8. Seleccione la clave privada de Putty (ppk) que acabamos de crear.
9. Desplácese hacia atrás hasta Sesión, ingrese el nombre de host/dirección IP para su servidor y haga clic en Abrir para iniciar una conexión.
10. Ingrese su nombre de usuario, luego la frase de contraseña para su clave. Presione Entrar para iniciar sesión.
Ahora tiene el control del servidor remoto, utilizando una terminal de Linux que funciona en el sistema de archivos de Linux. Para cerrar una conexión use CTRL + D o haga clic en la X para cerrar la ventana.
Cómo crear un par de claves SSH a través del símbolo del sistema/terminal
La creación de un par de claves SSH desde el símbolo del sistema/terminal de Linux se puede hacer con solo un comando y algunas preguntas para responder. Configuramos las claves pública y privada en nuestra máquina cliente, copiando la clave pública en el servidor remoto. Estos pasos se aplican al símbolo del sistema de Windows y al terminal de Linux.
1. Abra un símbolo del sistema presionando la tecla de Windows y busque CMD. Presiona Enter para ejecutar.
2. Usa el comando ssh-keygen para crear una clave SSH utilizando el tipo de clave RSA, con 4096 bits.
ssh-keygen -t rsa -b 4096
3. Cuando se le solicite que asigne un nombre a su clave, presione Entrar. Esto guardará la clave pública y privada en el directorio .ssh para su cuenta designada. Por ejemplo, nuestras claves se guardaron en C:Userslespo.ssh. Usuarios de Linux, las claves se guardarán en .ssh en su directorio de inicio homeuser.ssh
4. Cuando se le solicite, asigne a su clave una frase de contraseña como un nivel adicional de seguridad. Una frase de contraseña es un paso de seguridad adicional para las claves SSH que utilizarán los usuarios reales (interactivamente). No se necesita una frase de contraseña si la conexión SSH se utilizará en un script automatizado.
5. Cambie el directorio a la ubicación de sus claves SSH. Aquí asumimos que está en su cuenta designada. Por ejemplo, C:Userslespo es nuestro. Bajo Linux sería /home/les/.ssh
cd .ssh
6. Enumere los archivos en el directorio. Debería haber id_rsa e id_rsa.pub.
Windows Command
dir
Linux Command
ls
Copia de la clave pública en el servidor remoto
La clave pública se almacena en nuestro servidor remoto e interactúa con la clave privada en nuestra máquina de confianza para formar una conexión segura. Para obtener la clave pública de nuestro servidor, necesitamos copiar de forma segura (scp) el archivo.
1. En un símbolo del sistema, use el comando scp para copiar de forma segura id_rsa.pub en su directorio de inicio en el servidor remoto. Deberá conocer la dirección IP o el nombre de host de la computadora remota. En nuestro ejemplo, copiamos el archivo a [email protected]:/home/testuser/
scp id_rsa.pub user@hostname:/home/username
2. SSH en la computadora remota.
ssh user@hostname
3. Verifique que el archivo id_rsa.pub esté presente en su directorio de inicio.
ls *.pub
4. Copie el contenido del archivo en un archivo nuevo en el directorio .ssh. Usando el comando cat, enviamos el contenido al archivo, authorized_keys usando una tubería que agrega los datos al archivo (>>).
cat id_rsa.pub >> .ssh/authorized_keys
5. Cierre la conexión SSH presionando CTRL + D o escribiendo exit.
6. Vuelva a conectarse a través de SSH a la computadora remota. Si creó una frase de contraseña para su clave SSH, se le solicitará.
Uso de claves SSH en otra máquina
Es posible reutilizar su clave SSH privada, pero no es la mejor práctica de seguridad. Perder una computadora portátil con la clave significa que deberá regenerar sus claves. La mejor práctica sería generar un nuevo par de claves para cada dispositivo que desee conectarse. Agregar la clave pública al archivo authrozied_keys en el servidor. Dicho esto, es relativamente fácil reutilizar una clave privada en varios dispositivos.
Reutilización de una clave privada PuTTY
PuTTY almacena la clave privada como una clave PPK y este archivo es todo lo que necesitamos para que una máquina se conecte a un servidor remoto usando nuestra clave pública.
1. Vaya a su carpeta .ssh y copie el archivo PPK en una memoria USB. Mantenga esta memoria USB segura, ya que cualquiera puede usarla para obtener acceso a su servidor.
2. Inserte la memoria USB en otra computadora.
3. Cree una carpeta .ssh en su directorio de inicio. Para Windows, sería C:Usersusername.ssh y Linux /home/user/.ssh.
4. Copie el archivo PPK en el directorio .ssh.
5. Siga desde el paso 7 de Copia de la clave pública al servidor remoto para iniciar sesión.
Reutilización de una clave privada del símbolo del sistema/terminal
1. Vaya a su carpeta .ssh y copie el archivo de clave privada en una memoria USB. Mantenga esta memoria USB segura, ya que cualquiera puede usarla para obtener acceso a su servidor.
2. Inserte la memoria USB en otra computadora.
3. Cree una carpeta .ssh en su directorio de inicio. Para Windows, sería C:Usersusername.ssh y Linux /home/user/.ssh.
4. Copie el archivo de clave privada en el directorio .ssh.
5. Inicie una sesión SSH en la computadora remota. Si creó una frase de contraseña para su clave SSH, se le solicitará.
ssh user@hostname