SSH en Ubuntu
Escenario
Ubuntu 8.10
Vmware Workstation 8.10
Bien, una vez escribo aquí para hablar sobre SSH
SSH según la wikipedia..
SSH (Secure SHell) -intérprete de comandos seguro- es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix) corriendo. Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.
Después de leer la definición de la Wikipedia hemos entendido que, sirve para acceder a máquinas remotas a través de una red, copiar datos y lo mas importante el tráfico va cifrado, no como en telnet
Lo primero que hay que hacer es instalar SSH, para ello es muy fácil, como root hacemos:
marc@pruebas:~$ sudo apt-get install ssh
Una vez que este instalado nos pondremos a hacer cositas..
Lo primero que haremos será acceder al servidor vía ssh, tiene unos requisitos y es que el usuario exista en el servidor SSH
Asi que empezamos..
seifreed@seifreed:~$ ssh marc@172.16.75.130
The authenticity of host ’172.16.75.130 (172.16.75.130)’ can’t be established.
RSA key fingerprint is 9e:2a:f2:1e:df:71:09:f6:da:b9:97:a5:6c:67:f7:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’172.16.75.130′ (RSA) to the list of known hosts.
marc@172.16.75.130′s password:
Linux pruebas 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/right.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Thu Jan 22 19:45:21 2009 from 192.168.233.1
marc@pruebas:~$
Ahora analizemos lo que acaba de pasar..
Primero de todo hemos echo un ssh usuario@ip_del_servidor
Luego se nos notifica que el host(equipo) no esta en nuestra lista de confianza.
Nos indica la llave con cifrado RSA que lleva y nos pregunta que si queremos seguir conectando a pesar de que no conocemos el host
Y entonces se añade el host con la clave publica en nuestra lista de confianza, ponemos el password y ya estamos dentro.
Para salir de la conexión basta con poner exit.
Ahora configuraremos para que podamos ejecutar aplicaciones gráficas en el servidor de manera segura, para ello nos conectaremos en el servidor
y en el archivo sshd_config habilitaremos la linia que hace falta:
marc@pruebas:~$ sudo nano /etc/ssh/sshd_config
Entonces, hay que buscar esta linia, y si esta comentada # descomentarla.
X11Forwarding yes
Después de cualquier cambio en cualquier fichero de configuracion hemos de reiniciar el servicio SSH
marc@pruebas:~$ sudo /etc/init.d/ssh restart
[sudo] password for marc:
* Restarting OpenBSD Secure Shell server sshd [ OK ]
Y esto nos servirá para poder ejecutar aplicaciones gráficas remotamente:
seifreed@seifreed:~$ ssh -X marc@172.16.75.130
marc@172.16.75.130′s password:
Linux pruebas 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/right.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Thu Feb 5 19:12:31 2009 from seifreed.local
marc@pruebas:~$
Ahora ejecutamos una aplicación y verás como aparece en tu ordenador:
marc@pruebas:~$ xclock
Imagínate que ahora utilizamos ssh para administrar servidores que tengan el servicio SSH activado..
Es un poco pesado tener que estar poniendo password cada vez que tengamos que acceder al servidor que funcione bajo SSH,
asi que lo que haremos será hacer que no nos pida password.
Esto lo haremos generando una llave pública y copiarla al servidor que pertoca.
Vamos a empezar a generar la llave pública.
seifreed@seifreed:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/seifreed/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/seifreed/.ssh/id_rsa.
Your public key has been saved in /home/seifreed/.ssh/id_rsa.pub.
The key fingerprint is:
06:89:cf:a4:2d:94:27:69:0a:e3:8c:a7:54:3f:39:15 seifreed@seifreed
The key’s randomart image is:
+–[ RSA 2048]—-+
| E |
| + .. |
|o .B =. |
|+o.+.Oo. |
|.+o o=+ S |
|.o .o. |
|. |
| |
| |
+—————–+
seifreed@seifreed:~$
En mi caso el cifrado lo e echo RSA, aunque también se puede hacer DSA, eso ya va a gustos
Ahora copiaremos la llave que hemos creado al servidor..
seifreed@seifreed:~$ ssh--id -i marc@172.16.75.130
Now try logging into the machine, with “ssh ‘marc@172.16.75.130′”, and check in:.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
Y ahora nos conectaremos para verificar que NO nos pide password:
seifreed@seifreed:~$ ssh marc@172.16.75.130
Linux pruebas 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/right.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Thu Feb 5 19:37:34 2009 from seifreed.local
marc@pruebas:~$
Como podeis ver no nos pide password se conecta directamente
Bueno, ahora también podremos ejecutar comandos de manera remota y ademas ejecutaremos la aplicacion de manera gráfica
seifreed@seifreed:~$ ssh -X marc@172.16.75.130 “xclock”
Ahora vamos a hacer que SSH sea un poco mas seguro, para ello tocaremos un par de cosas del archivo de configuración.
Primero denegaremos que se puedan conectar en modo root vía SSH.
Para ello vamos al fichero de configuración que ya habíamos tocado antes.
marc@pruebas:~$ sudo nano /etc/ssh/sshd_config
y cambiamos la linia que por defecto esta en yes a no
PermitRootLogin no
Y entonces veremos como ahora no es posible conectarse como root
seifreed@seifreed:~$ ssh root@172.16.75.130
root@172.16.75.130′s password:
Permission denied, please try again
SSH utiliza el puerto por defecto el 22, eso lo podemos cambiar también en el fichero de configuración sshd_config:
Miramos la siguiente linia y cambiamos el 22 por el numero que queramos.
# What ports, IPs and protocols we listen for
Port 30
Acordaros que hay que reiniciar SSH cada vez que hagamos un cambio en la configuración
marc@pruebas:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
Entonces a la hora de conectarnos tenemos que especifIcarle en que puerto esta corriendo SSH
seifreed@seifreed:~$ ssh -p 30 marc@172.16.75.130
Linux pruebas 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/right.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Thu Feb 5 20:12:12 2009 from seifreed.local
marc@pruebas:~$
Vale, ahora lo que haremos es modificar el tiempo que tiene el usuario para meter la contraseña de acceso.
Para ello volvemos a ir al fichero de configuración y tocamos la siguiente linia:
marc@pruebas:~$ sudo nano /etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
Y como siempre reiniciamos el servicio:
marc@pruebas:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
Naturalmente para la gente que disponga de su llave pública este parámetro no sirve de nada.
Y para acabar ya de mejorar la seguridad pondremos que solo pueda fallar el password 2 veces.
marc@pruebas:~$ sudo nano /etc/ssh/sshd_config
MaxStartups 2
marc@pruebas:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
Ahora veremos como no deja:
seifreed@seifreed:~$ ssh -p 30 pruebas@172.16.75.130
pruebas@172.16.75.130′s password:
Permission denied, please try again.
pruebas@172.16.75.130′s password:
Permission denied, please try again.
pruebas@172.16.75.130′s password:
Connection closed by 172.16.75.130
Y acabaremos la seguridad SSH denegando o dejando acceder via SSH por el nombre de usuario,
Nos vamos al fichero de configuracion y al final de todo el archivo escribimos lo siguiente:
AllowUsers marc
DenyUsers prueba
Yo e puesto mis usuarios pero vosotros teneis que poner los vuestros:
Acordaros de reiniciar el servicio
Ahora le aplicaremos un poco de estilo a SSH cambiando el mensaje de bienvenida al conectarnos a una máquina
Asi que hacemos lo siguiente nos conectamos al servidor primero, y luego vamos a editar el siguiente archivo:
marc@pruebas:~$ sudo nano /etc/issue.net
Y ahí dentro escribimos lo que queremos que salga, pero antes de probarlo vamos al fichero sshd_config y le cambiamos una liniea para que salga esto:
Banner /etc/issue.net
Esa linia la hemos de descomentar y ademas mirar que la ruta /etc/issue.net este bien puesta.
Y ahora lo que haremos será poner un mensaje una vez nos hayamos logueado con exito en la máquina:
marc@pruebas:~$ sudo nano /var/run/motd
Borrar todo lo que haya ahi dentro y poned vuestro mensaje y luego reiniciar el servicio.
Ahora veremos como queda:
seifreed@seifreed:~$ ssh -p 30 pruebas@172.16.75.130
Bienvenido, te estas conectando al Servidor de Prueba SSH
pruebas@172.16.75.130′s password:
Hola!
Te has conectado con exito al servidor de pruebas SSHpruebas@pruebas:~$
Y hasta aquí el tutorial de SSH, dentro de poco colgaré SCP y SSHFS
Saludos
Referencias:
2 Responses to “SSH en Ubuntu”
Trackbacks / Pingbacks
- - 2009/07/02
Merci beaucoup! Thanks!
Te agradezco este tutorial y quedo a la espera de los prometidos.