Skip to main content

Configurando y usando OpenSSH en CentOS 7

SSH LogoEl escenario es el siguiente, CentOS 7 recién instalado con OpenSSH instalado y configurado por default y SELinux desactivado.

Aunque usemos contraseñas con 20 o 30 caracteres usando caracteres especiales y todo eso, siempre es mejor el uso de llaves y cambiar algunos valores en el servidor al que nos queremos conectar.

Para generar una clave SSH en Linux usando el comando ssh-keygen deberías ejecutarlo usando la línea de comandos, esto se hace desde el cliente:

[cc lang=»bash»]
perengao@elrond:~$ ssh-keygen -t rsa -b 4096 -C «[email protected]»
Generating public/private rsa key pair.
Enter file in which to save the key (/home/perengano/.ssh/id_rsa):
Created directory ‘/home/perengano/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/perengano/.ssh/id_rsa.
Your public key has been saved in /home/perengano/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1AfAgsKI7fv/9h0dTHkUccMR2bwD+XkUcBQbWOaq/LA [email protected]
The key’s randomart image is:
+—[RSA 4096]—-+
|.+ . …. .B/%|
|o + . . .. . ++=O|
| . . .. . . =++|
| . . . o.*.|
| . S .o o|
| . . .. . |
| . +. . |
| . . .+. |
| ..o…E.. |
+—-[SHA256]—–+
perengano@elrond:~$ cat .ssh/id_rsa.pub
[/cc]

En este ejemplo no estoy usando una passphrase, pero se aconseja usar una.

Una vez que la llave ha sido generada, podemos copiarla al servidor destino usando el siguiente comando:

[cc lang=»bash»]
ssh-copy-id user@serverip
[/cc]

También pueden hacerlo usando copiar y pegar, subiendo el archivo con scp, etc.

[cc lang=»bash»]
perengano@elrond:~$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: «/home/perengano/.ssh/id_rsa.pub»
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
[email protected]’s password:

Number of key(s) added: 1

Now try logging into the machine, with: «ssh ‘[email protected]
and check to make sure that only the key(s) you wanted were added.

perengano@elrond:~$
[/cc]

Ahora nos toca realizar lo siguiente del lado del servidor, primeramente dejar los permisos para que OpenSSH no nos de lata:

[cc lang=»bash»]
perengano@elrond:~$ ssh [email protected]
[email protected]’s password:
Last login: Mon Apr 10 19:22:07 2018 from 189.201.191.13
[perengano@B8GUsg ~]$ chmod 700 .ssh
[perengano@B8GUsg ~]$ chmod 600 .ssh/authorized_keys
[perengano@B8GUsg ~]$
[/cc]

OpenSSH es muy quisquilloso con los permisos tanto del directorio como del archivo, en mi caso había hecho el segundo comando, pero no el primero y no me permitía loguearme con las llaves.

[cc lang=»bash»]
[perengano@B8GUsg ~]$ sudo su –
[sudo] password for perengano:
Último inicio de sesión:lun abr 16 21:40:02 EDT 2018en pts/0
Último inicio de sesión fallido:lun abr 16 22:47:05 EDT 2018de 195.208.185.50en ssh:notty
Hubo 2 intentos de logueo fallidos desde el último logueo exitoso.
[root@B8GUsg ~]#
[/cc]

Ya como root, hacemos una copia de seguridad del archivo de configuración original y editamos:

[cc lang=»bash»]
[root@B8GUsg ~]# cp /etc/ssh/sshd_config /etc/ssh/orig.sshd_config
[root@B8GUsg ~]# nano /etc/ssh/sshd_config
[/cc]

Y los valores que hay que cambiar son los siguientes

[cc lang=»vim»]
# Desactivamos que root pueda loguearse usando ssh
PermitRootLogin no

# Estos valores nos permiten usar SSH keys en lugar de passwords
RSAAuthentication yes
PubkeyAuthentication yes

# Desactivamos las contraseñas
PasswordAuthentication no
[/cc]

Reiniciamos el servicio:

[cc lang=»bash»]
[root@B8GUsg ~]# systemctl restart sshd.service
[/cc]

Nota: Abrir una segunda terminal o pestaña de terminal y desde ahí hacer pruebas, no te desconectes en caso de que algo no funcione como debe:

[cc lang=»bash»]
perengano@elrond:~$ ssh vpsmikel.ds
Last login: Mon Apr 16 21:52:28 2018 from 189.201.191.13
[perengano@B8GUsg ~]$
[/cc]

Con eso deben tener todo listo para poder hacer uso de las llaves. Sin embargo, si quieren usar un cliente como Filezilla para copiar archivos y todo eso, necesitamos exportar nuestra llave. Esto lo podemos hacer usando puttygen.exe

Creo un directorio con los archivos generados al inicio:

[cc lang=»bash»]
perengano@elrond:~$ mkdir keys
perengano@elrond:~$ cp .ssh/id_rsa keys
perengano@elrond:~$ cp .ssh/id_rsa.pub keys
[/cc]

Vamos a usar Wine, si no lo tienen pueden instalarlo:

[cc lang=»bash»]
perengano@elrond:~$ sudo apt install wine wine-utils
perengano@elrond:~$ cd keys
perengano@elrond:~$ wine ../Descargas/puttygen.exe
it looks like wine32 is missing, you should install it.
as root, please execute «apt-get install wine32»
[/cc]

PuttygenImport keyPuttygen WarningPuttygen save key

Después de hacerlo, podemos ver los archivos que tenemos:

[cc lang=»bash»]
perengano@elrond:~/keys$ ls -la
total 20
drwxr-xr-x 2 perengano perengano 4096 abr 16 23:21 .
drwxr-xr-x 49 perengano perengano 4096 abr 16 17:51 ..
-rw-r–r– 1 perengano perengano 3244 abr 16 23:15 id_rsa
-rw-r–r– 1 perengano perengano 755 abr 16 23:15 id_rsa.pub
-rw-r–r– 1 perengano perengano 2701 abr 16 23:21 perengano.ppk
perengano@elrond:~/keys$
[/cc]

Ahora sí, podemos añadir nuestro archivo .ppk a Filezilla

FilezillaFilezilla warningFilezilla connected

Y eso sería todo.

Referencias:

 

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.