Servidor SSH en Windows
Ya que me estoy metiendo cada vez mas en el mundillo linux, me pregunté si era posible instalar y configurar un Servidor SSH en Windows XP.
Lo haremos con el Software FreeSSh
Vamos a la pagina Oficial a la sección de descargas:
Escojemos el primero lo instalamos y le decimos que si a que nos cree las llaves y luego le decimos que si también a que freessh este como un servicio.
Luego en el apartado de la fecha de Windows le damos con el boton derecho encima del icono de FREESSH y le damos a setings y lo vamos dejando todo igual que en las imágenes
Vamos con la primera:

Dejando esto así dejamos activado Telnet y SSH, vamos a la siguiente pantalla, la de SSH

Yo he puesto un mensaje de Bienvenida como podeis comprobar.. y nos vamos a la pestaña de Users
Y añadimos uno, y le damos los permisos que queramos yo se los e dado todos:

Y con eso ya funcionaría.. Hagamos la prueba con Ubuntu:
pruebas@pruebas-vmware:~$ ssh root@192.168.0.192
root@192.168.0.192′s password:
Microsoft Windows XP [Versi�n 5.1.2600]168.0.192
(C) Copyright 1985-2001 Microsoft Corp.
Bienvenido al Servidor SSH de Marc\222|\2402023
C:\Scripts\ssh>
C:\>cd DatosC:\Datos>dir
El volumen de la unidad C es Windows
El n�mero de serie del volumen es: EC57-4DD5Directorio de C:\Datos
14/03/2009 02:53 p.m. <DIR> .
14/03/2009 02:53 p.m. <DIR> ..
16/03/2009 04:40 p.m. <DIR> Correo
14/03/2009 02:53 p.m. <DIR> Descargas
0 archivos 0 bytes
4 dirs 183.839.596.544 bytes libres
C:\Datos>
Sólo nos deja hacer dir, porque al conectarse inicia CMD.exe…
SCP y SSHFS en Ubuntu
No definiré esta vez SCP con una definición de la Wikipedia ya que la que había no me acaba de gustar.
Asi que me fui a una estupenda página como es Guia Ubuntu y mire a ver que tal, y tan poco acaba de dar una definición.
Aunque para quien no lo sepa SCP es secury copy.
Se utiliza para hacer copias seguras de un pc a otro.
Empezaremos con ejercicios básicos.
Vamos a hacer primero una carpeta desde donde haremos todas las pruebas.
marc@seifreed:~/Escritorio/home/wordpress/tutoriales$ mkdir scp
Luego crearemos unos cuantos archivos para poder hacer la práctica:
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ touch prueba.txt
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ touch imagen.jpg
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ mkdir archivos
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ cd archivos/
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp/archivos$ touch prueba.txt
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp/archivos$ touch imagen.jpg
Bien empezaremos haciendo la copia desde mi PC es decir el usuario marc@seifreed a marc@pruebas
La sintaxis del comando es sencilla:
scp usuario@maquina:/home/carpeta .
La explicación es sencilla, scp con el usuario y el password dos puntos la ruta de la carpeta que queramos copiar y, en este caso pondremos un punto
que lo que quiere decir es que lo copiara en el directorio que nos encontramos actualmente.
Ahora desde la otra máquina obtendremos los archivos que hemos creado:
marc@pruebas:~$ scp marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp/imagen.jpg .
The authenticity of host ’192.168.0.192 (192.168.0.192)’ can’t be established.
RSA key fingerprint is df:6f:5d:7d:de:77:84:ce:73:d0:90:cc:cd:02:06:e0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’192.168.0.192′ (RSA) to the list of known hosts.
marc@192.168.0.192′s password:
imagen.jpg 100% 0 0.0KB/s 00:00
Luego crearemos mas archivos jpg para hacer otro tipo de copias:
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ touch imagen2.jpg
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp$ touch imagen3.jpg
Ahora copiaremos los archivos por extensión:
marc@pruebas:~$ scp marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp/*.jpg .
marc@192.168.0.192′s password:
imagen2.jpg 100% 0 0.0KB/s 00:00
imagen3.jpg 100% 0 0.0KB/s 00:00
imagen.jpg 100% 0 0.0KB/s 00:00
También podemos copiar a otro directorio que no sea el actual ademas añadiendo *. y la extensión para que nos coja todos los archivos con diha extensión:
marc@pruebas:~$ scp marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp/*.jpg /home/marc/pruebas/
marc@192.168.0.192′s password:
imagen2.jpg 100% 0 0.0KB/s 00:00
imagen3.jpg 100% 0 0.0KB/s 00:00
imagen.jpg 100% 0 0.0KB/s 00:00
Ahora lo que haremos será copiar todo el contenido de una carpeta:
marc@pruebas:~$ scp -r marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp/archivos .
marc@192.168.0.192′s password:
imagen.jpg 100% 0 0.0KB/s 00:00
prueba.txt
Y por último también podemos copiar un archivo y al copiarlo cambiarle el nombre
marc@pruebas:~$ scp marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp/imagen.jpg /home/marc/imagen2.jpg
marc@192.168.0.192′s password:
imagen.jpg 100% 0 0.0KB/s 00:00
marc@pruebas:~$ ls -ll|grep imagen2.jpg
-rw-r–r– 1 marc marc 0 2009-02-11 21:09 imagen2.jpg
Y ahora empezaremos con SSHFS
Primero hay que instalarlo si no disponemos de él:
marc@pruebas:~$ sudo apt-get install sshfs
Luego añadimos el usuario al grupo fuse que es el de sshfs:
marc@seifreed:~/Escritorio/home/wordpress/tutoriales/scp/archivos$ sudo usermod -G fuse -a marc
[sudo] password for marc:
Y ahora cargamos el módulo en memoria:
marc@pruebas:~$ sudo modprobe fuse
Ahora montaremos el directorio remoto con SSH, primero montaremos la carpeta donde ira montado el directorio remoto con SSH
marc@pruebas:~$ mkdir ~/sshfsremoto
Y ahora montaremos la unidad:
marc@pruebas:~$ sshfs marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp ~/sshfsremoto
marc@192.168.0.192′s password:
marc@pruebas:~$ ls -ll ~/sshfsremoto
total 4
drwxr-xr-x 1 marc marc 4096 2009-02-11 19:45 archivos
-rw-r–r– 1 marc marc 0 2009-02-11 20:32 imagen2.jpg
-rw-r–r– 1 marc marc 0 2009-02-11 20:32 imagen3.jpg
-rw-r–r– 1 marc marc 0 2009-02-11 19:45 imagen.jpg
-rw-r–r– 1 marc marc 0 2009-02-11 19:45 prueba.txt
SI por el contrario queremos que se monte esa unidad cada vez que iniciamos sesión ya que trabajamos a diario con ello:
marc@pruebas:~$ sshfs#marc@192.168.0.192:/home/marc/Escritorio/home/wordpress/tutoriales/scp ~/sshfsremoto fuse defaults,auto 0 0
Y si tampoco queremos cargar el módulo siempre en memoria:
marc@pruebas:~$sudo sh -c “echo fuse >> /etc/modules”
Y si queremos desomontar el directorio es tan facil como:
marc@pruebas:~$fusermount -u ~/sshfsremoto
Referencias:
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:
SSH Parte 1
Probado en Ubuntu:
Instalar ssh para hacer de servidor
apt-get install ssh
Configurar el acceso a tu máquina:
Mirar el archivo de configuración
/etc/ssh/sshd_config
Si queremos que alguien se conecte añadimos el usuario
Agregamos un linea en el archivo anterior
AllowUsers NOMBRE DE USUARIO
Y si queremos denegar un usuario:
DenyUsers NOMBRE DE USUARIO
Otra manera de denegar el acceso a tu máquina es editando el archivo
/etc/passwd
Buscar el usuario y al final pone /bin/bash o bin/sh lo cambiamos por false
Empezar el servicio SSH
sudo /etc/init.d/ssh start
Como conectarse a una máquina remota?
ssh NOMBRE DE USUARIO IP O NOMBRE DE LA MÁQUINA
Ejemplo:
$ssh seifreed@192.168.0.192
introducimos la contraseña
Y ya estaremos dentro de la máquina remota.
Como abrir aplicaciones gráficas?
2 maneras
1-Por ssh
ssh seifreed@192.168.0.192 -Y
2-En el host
Editando el archivo /etc/ssh/sshd_config
Linea xForwanding tiene que estar yes
Y también en el cliente
Editando el archivo /etc/ssh/ssh_config
XForwanding yes
Recordad que no haya # delante de xForwanding, por que no leera esa linea
Copiar archivos a máquia remota
scp archivo local usuario@ipremota:archivoremoto
Ejemplo:
scp hola seifreed@192.168.0.192:hola
Archivo remoto a la máquina local
scp user@ipremota:archivolocal