Cómo generar y administrar las teclas SSH en Linux
- 2947
- 594
- Claudia Baca
El protocolo SSH (Secure Shell) proporciona la capacidad de realizar comunicaciones encriptadas a través de redes informáticas. Las operaciones típicas que podemos realizar utilizando el protocolo son ejecuciones de comandos remotos de inicio de sesión remoto y remotos. Cuando iniciamos sesión en una computadora remota (con el ssh
Utilidad, por ejemplo), se nos solicita que proporcionemos la contraseña para la cuenta que estamos utilizando para iniciar sesión. Para una seguridad mejorada, podemos decidir usar las claves SSH como credenciales: una vez que el servidor SSH se configura adecuadamente, para poder iniciar sesión, debemos saber algo (la contraseña) pero también poseemos algo (una clave). En este tutorial vemos cómo generar, administrar y usar las teclas SSH.
En este tutorial aprenderás:
- ¿Qué es un keypair ssh?
- ¿Cuál es la diferencia entre una clave SSH privada y pública y cuál es su papel?
- Cómo generar KeyPairs SSH
- Cómo modificar la contraseña de una tecla SSH privada
- Cómo transferir las claves públicas a un servidor SSH
Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Distribución independiente |
Software | OpenSsh Utilities |
Otro | No se necesitan otros requisitos |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Cómo funcionan los teclas de SSH
Las teclas SSH se utilizan como credenciales de inicio de sesión, a menudo en lugar de contraseñas de texto claras simples. Trabajan en parejas: siempre tenemos un público y un privado llave. La clave privada debe permanecer en la computadora local que actúa como el cliente: se usa para descifrar información y nunca debe compartirse. La clave pública, por otro lado, se utiliza para cifrar datos y debe copiarse en el servidor remoto (su contenido se copia en el ~/.ssh/autorized_keys
Archivo en el directorio $ Home del usuario que iniciamos sesión como en el servidor: veremos cómo realizar dicha operación en el curso de este tutorial).
La capacidad de usar las teclas SSH como las credenciales de inicio de sesión debe ser permitido por el lado del servidor, el administrador del sistema, configurando el PubKeyAuthentication
opción para Sí
en el /etc/ssh/sshd.configuración
archivo. Tanto las contraseñas de texto claras como las claves públicas pueden permitirse como métodos de autenticación al mismo tiempo, o, por ejemplo, uno podría decidir permitir el acceso solo a través de claves públicas.
Las herramientas y utilidades que utilizaremos en este tutorial se instalan de forma predeterminada en todas las principales distribuciones de Linux, como parte del suite de software OpenSSH.
Generando un KeyPair SSH
Generar un KeyPair SSH es una operación muy simple: todo lo que tenemos que hacer es usar el ssh-keygen
utilidad. La forma más fácil de realizar la operación es solo invocar el comando sin ningún argumento u opción:
$ ssh-keygen generando un par de claves RSA pública/privada. Ingrese el archivo en el que guardar la clave (/home/egdoc/.SSH/ID_RSA): ingrese la frase de pass (vacía para no frase de pases): ingrese la misma frase de pases nuevamente: su identificación se ha guardado en/home/egdoc/.SSH/ID_RSA Su clave pública se ha guardado en/home/egdoc/.ssh/id_rsa.PUB La huella digital clave es: Sha256: jrcj3a3eq4wo/lx4vaccpckyeaeyu0ai80emcda7m5dk egdoc@fingolfin la imagen randomart de la llave es: + --- [rsa 3072] ---- + | =.+.O . | | * = o ... | | E ... o + . | | . O+. O + .| | sistema operativo. + O O.| | O + O.+ o | | . O O.transmisión exterior.O ... | | O O .B.B . | | +... oo = . | +---- [SHA256]-----+
Analicemos lo que sucede cuando invocemos el comando de esta manera. Lo primero que se nos solicita es dónde se deben almacenar las claves generadas: de forma predeterminada se llama a la clave privada generada ID_RSA
, y el nombre del público se obtiene agregando el .pub
extensiones. Ambos, por defecto, se crean dentro del ~/.ssh
directorio; Sin embargo, somos gratuitos para proporcionar nombres y ubicación alternativos.
La segunda cosa que nos piden es proporcionar un frase: se utiliza para asegurar la clave privada. Podemos ingresar a la frase de pases o simplemente presionar ENTER y dejar el campo en blanco. En el primer caso, se nos pedirá que proporcionemos la contraseña que utilizamos cada vez que intentamos usar la clave. Si dejamos el campo vacío, en su lugar, podemos lograr un inicio de sesión sin contraseña en el servidor: esto podría representar un riesgo de seguridad, ya que todos con acceso a la clave podrían hacerse pasar por nosotros; Por otro lado, esta configuración generalmente se usa para realizar operaciones desatendidas a través de SSH, como, por ejemplo, copias de seguridad programadas.
Después de proporcionar una contraseña, se generan las claves y el Huella digital clave y Imagen Randomart se muestran en la pantalla. Está hecho! En este punto tenemos nuestro KeyPair SSH en su lugar.
Cambiar el tipo de tecla y el tamaño de bits
Por defecto, cuando no se pasan opciones específicas al ssh-keygen
comando, un RSA El par de claves se genera con un tamaño de 3072
brocas. Para usar un tipo de tecla alternativa, debemos usar el -T
opción de ssh-keygen
y proporcionar el tipo de clave que queremos usar como argumento. Los tipos de claves disponibles son:
- DSA
- ECDSA
- sk ecdsa
- ED25519
- ED25519-SK
- RSA
Cada tipo de tecla tiene su valor predeterminado en términos de tamaño de bits. Las teclas DSA, por ejemplo, deben ser exactamente 1024
bits, mientras que para las claves de Ecdsa, como se indica en el manual:
-El indicador B determina la longitud de la clave seleccionando de uno de los tamaños de curva elíptica: 256, 384 o 521 bits.
Otros tipos clave como ECDSA-SK, ED25519 y ED25519-SK tienen una longitud fija que no se puede cambiar.
Siempre que sea posible, para cambiar el tamaño de bit que debe usarse para la generación de claves, podemos usar el -b
opción del ssh-keygen
utilidad, y pase el número de tamaño de bits como argumento. Digamos que queremos generar una clave RSA de 4096
bits (en lugar del valor predeterminado 3072
); Corríamos:
$ ssh -keygen -b 4096
Especifique la ruta de las teclas de manera no interactiva
Como vimos en el ejemplo, cuando no se especifica de otra manera el nombre predeterminado utilizado para las teclas generadas será ID_RSA
. Por supuesto, podemos cambiarlo interactivamente, cuando se solicitamos, pero ¿qué pasa si queremos proporcionarlo de antemano?? Bueno, en ese caso podemos invocar ssh-keygen
junto con el -F
opción y pasar el nombre de archivo para usar para la clave como argumento. Supongamos que queremos que nuestras llaves se almacenen como ~/.ssh/linuxconfig_rsa
(Privado) y ~/.ssh/linuxconfig_rsa.pub
(público);
Corríamos:
$ ssh -keygen -f ~/.ssh/linuxconfig_rsa
Cambiar una contraseña de clave privada
Como ya vimos, cuando creamos un KeyPair SSH, tenemos la oportunidad de proteger la clave privada con una contraseña que podemos proporcionar cuando se solicite. ¿Qué pasa si queremos modificar esta contraseña en algún momento en el futuro?? ¿Cómo podemos cambiar la contraseña de una clave privada??
Es fácil! Todo lo que tenemos que hacer es invocar el ssh-keygen
utilidad con el -pag
opción. Cuando invocamos el comando con esta opción, primero se nos pedirá que proporcionemos la ruta de la clave privada que queremos cambiar, luego se nos pedirá que proporcionemos la frase de pases antigua utilizada (si corresponde), y finalmente lo estaremos pidió entrar en la nueva frase de pases dos veces:
$ ssh -keygen -p ingrese el archivo en el que la clave es (/home/egdoc/.SSH/ID_RSA): ingrese la frase de pases antigua: la clave tiene comentarios "Ingrese la nueva frase de pases (vacía sin frase de pases): ingrese la misma frase de pases nuevamente: su identificación se ha guardado con la nueva fase de pases.
La clave predeterminada que se seleccionará para el cambio de contraseña es ~/.ssh/id_rsa
, Al igual que sucede en el momento de la creación. Si queremos proporcionar la ruta de una clave privada directa y no interactivamente, podemos, nuevamente, usar el -F
opción y pasar
La ruta clave como argumento, por ejemplo:
$ ssh -keygen -p -f ~/.ssh/id_rsa
Cargando la clave pública en el servidor
Para poder usar las teclas SSH que generamos como método de autenticación en un servidor remoto, necesitamos cargar nuestra clave pública en ella. El conjunto de herramientas OpenSSH proporciona una utilidad que está específicamente diseñada para realizar esta tarea:SSH-Copy-ID
. Aquí hay un ejemplo de su uso. Para copiar la tecla SSH predeterminada ID_RSA.pub
En un servidor remoto, se ejecutaríamos:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Lo que hicimos en el ejemplo anterior es bastante simple. Invocamos el SSH-Copy-ID
utilidad con el -i
Opción: esta opción nos permite especificar la clave pública que debe usarse. Pasamos su clave de ruta como argumento de opción (el .pub
El sufijo se agrega automáticamente si no está presente). El argumento principal que proporcionamos es, en cambio, el usuario que queremos iniciar sesión como (opcional) junto con la dirección IP del servidor.
La salida del comando anterior será algo similar al siguiente:
/usr/bin/ssh-copy-id: información: fuente de la (s) clave para ser instaladas: "/home/egdoc/.ssh/id_rsa.PUB "/usr/bin/ssh-copy-id: info: intento de iniciar sesión con las nuevas teclas (s), para filtrar cualquiera que ya esté instalada/usr/bin/ssh-copy-id: info: 1 clave (s) aún no se está instalando: si se le solicita ahora, es instalar las nuevas teclas [email protected]ña de 39:
Para que la clave se instale en el servidor SSH, primero debemos proporcionar la contraseña actual que estamos utilizando para iniciar sesión. Después de hacerlo, si todo va como se esperaba, veremos la siguiente respuesta:
Número de teclas agregadas: 1 Ahora intente iniciar sesión en la máquina, con: "SSH '[email protected] '"y verifique para asegurarse de que solo se agregaran las clave que deseaba.
Si no estamos seguros de qué claves se copiarían en el servidor remoto, podemos iniciarnos SSH-Copy-ID
con el -norte
opción para realizar un corrido por secado: Las claves no se instalarán en el servidor; en cambio, los que se copiarían se informarán en la pantalla.
El puerto predeterminado utilizado por el servidor SSH es 22
; A veces, el administrador del sistema, sin embargo, podría decidir cambiarlo, solo para evitar los ataques de fuerza bruta más genéricos. En tales casos, cuatro nuestra conexión ssh para trabajar, debemos usar el -pag
(corto para --puerto
) opción al invocar el SSH-Copy-ID
coman y pase el puerto que debe usarse para la conexión como argumento. Supongo que el puerto utilizado es 15342
, Por ejemplo, ejecutaríamos:
ssh-copy-id -i ~/.ssh/id_rsa.PUB -P 15342 [email protected]
Conclusiones
En este tutorial aprendimos los conceptos básicos de las claves SSH: vimos que un par de claves también está compuesto por una clave pública y privada, para qué se usan y cómo deben tratarse. Vimos cómo generar un keypair, cuáles son los diferentes tipos de claves que podemos usar y cómo podemos especificar su tamaño en bits en el momento de la creación. También vimos cómo una clave privada SSH puede protegerse con una contraseña y cómo podemos cambiarla. Finalmente aprendimos cómo podemos usar el SSH-Copy-ID
utilidad para copiar una clave pública específica en el servidor de destino.
Tutoriales de Linux relacionados:
- Una introducción a la automatización, herramientas y técnicas de Linux
- Cosas para instalar en Ubuntu 20.04
- Cómo configurar un servidor OpenVPN en Ubuntu 20.04
- Mastering Bash Script Loops
- Cómo administrar conexiones inalámbricas usando IWD en Linux
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- ¿Puede Linux obtener virus?? Explorando la vulnerabilidad de Linux ..
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Sistema colgado de Linux? Cómo escapar a la línea de comando y ..
- Lista e instalación de clientes FTP en Ubuntu 22.04 Linux ..
- « Cómo leer y crear archivos CSV usando Python
- Cómo Grep Correntemente para el texto en scripts bash »