Volver |

Acceso remoto con SSH

Introducción

SSH es un protocolo que permite acceso remoto a un servidor a través de una canal cifrado.

Existen varias implementaciones. Por ejemplo, en Linux existe una implementación llamada openssh-server.

 

Comandos para conectarse usando OpenSSH Client

Caso 1: En caso que sea mediante usuario y password, el comando a utilizar es:

ssh usuario@dominio

Caso 2: Para conectarse usando un archivo pem, se puede utilizar el siguiente comando:

ssh -i archivo.pem usuario@dominio

El archivo pem debe tener los permisos 600. Esto mejora la seguridad ya que solo el usuario propietario del archivo pem se podría conectar

Generar certificado para conectarse a servidor SSH

Configuración de claves púbica y privada para conectarse a servidor

Asumiremos que existe un "servidor" en Linux al cual se quiere acceder desde un cliente a través de un usuario de SSH.

Primero en el servidor debemos crear un usuario.

  1. Ejecutar:
# adduser nuevousuario

Una vez creado el nuevo usuario, procederemos a configurar el SSH del servidor para que acepte conexiones remotas de este nuevo usuario. Para ello, en el archivo /etc/ssh/sshd_config agregar AllowUsers nuevousuario. Tener en cuenta que acá se deben poner todos los usuarios que pueden aceptar conexiones.

 

2. Ahora, desde la máquina cliente tenemos que generar el par de claves pública y privada.

$ ssh-keygen -t rsa -b 4096 -C "nuevousuario@cualquierdominio.com"

Este comando va a generar 2 archivos. Uno es un archivo que debe ser guardado en forma privada (el que no tiene extensión) y el otro es el que se debe compartir (el que tiene la extensión pub).

Luego, si es posible se puede usar ssh-copy para enviar el certificado público al servidor:

ssh-copy-id nombreusuario@ipremota

 

Debe tenerse en cuenta a qué usuario se va a conectar. Si se acaba de crear un usuario en el servidor, entonces va a tener que crear el home de ese usuario (el comando adduser te lo crea por default), también el directorio .ssh adentro del home del nuevo usuario y agregar el archivo authorized_keys. En este archivo se debe agregar la clave pública (archivo con extensión pub) generado por el cliente.

Configuración de hosts remotos

En el archivo ~/.ssh se pueden configurar host remotos indicando dominio, puerto y archivo pem. Por ejemplo:

Host dev
    HostName dev.example.com
    User german
    Port 4000

 

Restringir la conexión de ciertos usuarios en el lado del servidor

En /etc/sshd_config agregar:

AllowUsers usuario1 usuario2

 

Referencias

https://logico.ar/blog/2018/12/4/generar-certificados-ssh-para-conexiones-sin-contrasenias-passwordless-ssh

https://linuxize.com/post/using-the-ssh-config-file/

Passphrase

Una passphrase, en general, hace referencia a una clave que protege una clave.

En SSH se utiliza para cifrar la clave privada (archivo pem), por lo que si un atacante roba la clave privada no debería poder descifrarla.

 

 

Guardar la passphrase

exec ssh-agent bash

Y luego

ssh-add archivo.pem

Y esto queda guardado.

 

Listar todas las claves que puedo usar sin saber el passphrase

ssh-add -l

 

Generar una clave sin passphrase

ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""

 

Referencias

https://www.ssh.com/academy/ssh/passphrase

https://www.ssh.com/academy/ssh/agent

En este artículo participaron: