Guía Breve sobre ssh con clave pública
La autenticación por clave pública nos permite loguearnos a un host sin necesidad de ingresar usuario y contraseña.
Descripción del método
Nociones fundamentales
- El esquema se basa en criptografía de clave pública.
 - Usamos claves separadas para cifrar y descifrar.
 - Es imposible obtener la clave para descifrar a partir de la clave para cifrar
 - Solamente el cliente sabe la clave privada.
 
Funcionamiento
- 
Desde el lado del cliente ssh creamos un par de claves (una pública y otra privada).
- Cada clave se guarda en archivo separado.
 - Tenemos la opción en este momento de cifrar su clave privada mediante una frase de paso. La clave privada queda inutilizable si olvidamos esa contraseña.
 - Desde el lado cliente copiamos la clave pública agregándola al archivo 
~/.ssh/authorized_keysen su directorio de la máquina remota. - Luego de esto, el usuario puede loguearse sin proporcionar la contraseña.
 - Cuando nos logueamos, el programa 
sshle dice al servidor que par de claves le gustaría usar para autenticar. El cliente verifica que tiene acceso a la clave privada y el servidor verifica que la clave correspondiente está autorizada para aceptar la cuenta. - El servidor puede informarle al cliente los errores que impidan que la autenticación por clave pública se pueda usar exitósamente luego de que la autenticación se complete usando un método diferente.
 - De manera predeterminada si falla el método por clave pública se usará otro método, como por ejemplo el de usuario y password.
 
 
Nota:La manera más conveniente de usar una clave pública es con un agente de autenticación que se encargue de guardar en memora las claves privadas descifradas y de esta manera evitar tener que ingresar una y otra vez la frase de paso correspondiente.
Archivos involucrados del cliente
| Archivo | Descripción | 
|---|---|
| /usr/bin/ssh | cliente ssh | 
| /usr/bin/ssh-keygen | Generador de par de claves (una pública y otra privada). Con la opción -t se puede especificar el algoritmo | 
| ~/.ssh/known_hosts | claves públicas de los hosts a los que ya accedimos alguna vez | 
| ~/.ssh/id_rsa | (nombre predeterminado con algoritmo RSA) | 
| ~/.ssh/id_ecdsa | nombre predeterminado con algoritmo ECDSA | 
| ~/.ssh/id_ed2551 | nombre predeterminado con algoritmo ED25519 | 
Archivos involucrados del servidor
| Archivo | Descripción | 
|---|---|
| /usr/sbin/sshd | servidor ssh | 
| ~/.ssh/authorized_keys | Clave públicas de clientes autorizados | 
Formato de ~/.ssh/authorized_keys
El siguiente es un ejemplo de un archivo que contiene solamente dos claves pública:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDn i5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8= root@dublin.ireland.home command="yum check-update" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDnCi5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8= root@belfast.ireland.home
- 
ssh-rsaes el tipo de clave - 
AAAAB3NzaC1yc2EAAAADAQABAAAegQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDnCi5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8=es la clave pública codificada en base64 - 
root@dublin.ireland.homees un comentario opcional - 
command=yum check-updateen la segunda línea restringe el acceso permitiendo la ejecución de un único comando. - El contenido de este archivo debería tener permisos 0600 y el directorio 
~/.ssh0700. 
Comentarios
Comments powered by Disqus