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