jueves, 19 de junio de 2008

Comandos de consola en Windows XP

Alguna vez que otra he tenido que montar un servidor IIS sobre un windows server. Todo esto porque a alguien se le ocurre que el lenguaje ASP es un bueno lenguaje para desarrollar páginas webs :S. Bueno cuando te encargan una tarea de estas, andas muy perdido ya que en un windows todo lo sabes hacer a través del entorno gráfico, pues bien aquí os dejo una lista de comandos de consola muy útiles que no servirán para trabajar más comodamente e incluso sin tener que arrancar un escritorio remoto, sino a través de un Openssh por ejemplo.


subst x: c:\carpeta: Crea una unidad virtual a través de una carpeta.

Archivos y sistemas de ficheros

cacls: Permite modificar los permisos en ficheros y carpetas, permitiendo o prohibiendo a cada usuario leer, escribir o modificar el contenido de dichos archivos o carpetas.

chkdsk: Comprueba el estado de una partición y repara los daños en caso de que encuentre alguno. Si lo ponemos sin ningún parámetro simplemente escaneará la partición, si queremos que además corrija los errores, deberemos añadir la opción /F, es decir, chkdsk /F.

cipher: Permite cifrar archivos, directorios o particiones siempre que se encuentren en el sistema de archivos NTFS.

comp: Compara archivos o carpetas y muestra las diferencias existentes entre ellos.

compact: Permite comprimir archivos o carpetas para ahorrar espacio en el disco duro. Para comprimir los archivos deberemos utilizar el modificador /c y para descomprimirlo en modificador /u. Por ejemplo, para comprimir la carpeta c:\pruebas debemos utilizar el comando compact /c c:\pruebas y para descomprimirla compact /u c:\pruebas.

convert: Convierte particiones FAT ó FAT32 a NTFS. Antes de utilizar este comando es recomendable realizar una copia de seguridad puesto que es posible que durante la conversión se pierdan datos.

defrag: Desfragmenta los archivos de una unidad, similar a la utilidad Defragmentador de discos de Windows pero en modo consola.

diskpart: Permite crear, eliminar y administrar particiones. Este programa en modo consola debemos utilizarlo con cuidado puesto que es fácil que eliminemos sin darnos cuenta todo el contenido del disco duro o de la partición activa.

find y findstr: Estos comandos buscan cadenas de textos en el interior de uno o varios archivos. Sin embargo, el comando findstr ofrece más opciones de búsqueda que el comando find.

iexpress: Este comando lanzará un asistente para crear archivos comprimidos .CAB autodescomprimibles.

openfiles: Muestra a un administrador los archivos abiertos en un sistema a un administrador y permite desconectarlos si se han abierto a través de red.

Configuración del sistema

bootcfg: Permite ver y modificar las entradas del archivo boot.ini. Estas entradas nos permiten seleccionar con que sistema operativo deseamos iniciar el equipo.

control userpasswords2: Permite modificar las claves y los permisos de los diferentes usuarios, así como requerir la pulsación de control+alt+suprimir para poder iniciar sesión, haciendo el inicio de sesión más seguro.

driverquery: Hace un listado de todos los drivers instalados en el sistema y muestra información sobre cada uno de ellos.

dxdiag: Lanza la herramienta de diagnóstico de Direct X, con la cual podremos comprobar la versión Direct X que tenemos instalada y permite comprobar mediante tests que todo lo referente a estos controladores funcione correctamente.

gpresult: Muestra información sobre las políticas de grupo aplicadas a un usuario.

gpupdate: Vuelve a aplicar las políticas de grupo.

msconfig: Desde esta aplicación en modo gráfico podremos seleccionar que programas y servicios se cargan durante el inicio de Windows así como los sistemas operativos que el usuario puede seleccionar para iniciar el ordenador.

pagefileconfig: Permite configurar el archivo de paginación de Windows.

prncnfg: Muestra información sobre las impresoras instaladas

prnjobs: Muestra información sobre los trabajos de impresión en cola.

reg: Permite ver y modificar valores del registro de Windows. Las opciones posibles son:

reg query => realiza una consulta en el registro

reg add => añade una entrada al registro

reg delete => elimina una clave del registro

reg copy => copia una clave del registro a otra parte del registro o a otro equipo

reg save => guarda una parte del registro en un archivo

reg restore => restaura una parte del registro de un archivo

reg load => carga una clave o árbol al registro desde un archivo

reg unload => descarga una clave o árbol del registro

reg compare => compara varios valores del registro

reg export => exporta el registro o parte del registro a un archivo

reg import => importa el registro o parte del registro de un archivo

regedit: Editor del registro en modo gráfico.

sc: Este commando nos permite administrar los servicios, ya sea iniciar uno, detenerlo, mandarle señales, etc.

sfc: Este comando permite buscar archivos del sistema dañados y recuperarlos en caso de que estén defectuosos (es necesario el CD de instalación del sistema operativo para utilizarlo). Para realizar una comprobación inmediata, deberemos ejecutar la orden sfc /scannow.

systeminfo: Muestra información sobre nuestro equipo y nuestro sistema operativo: número de procesadores, tipo de sistema, actualizaciones instaladas, etc.

taskkill: Permite eliminar un proceso conociendo su nombre o el número del proceso (PID).

tasklist: Realiza un listado de todos los procesos que hay. Útil si deseamos eliminar un proceso y no conocemos exactamente su nombre o su PID.

Redes

arp: Muestra y permite modificar las tablas del protocolo ARP, encargado de convertir las direcciones IP de cada ordenador en direcciones MAC (dirección física única de cada tarjeta de red).

ftp: Permite conectarse a otra máquina a través del protocolo FTP para transferir archivos.

getmac: Muestra las direcciones MAC de los adaptadores de red que tengamos instalados en el sistema.

ipconfig: Muestra y permite renovar la configuración de todos los interfaces de red.

nbtstat: Muestra las estadísticas y las conexiones actuales del protocolo NetBIOS sobre TCP/IP, los recursos compartidos y los recursos que son accesibles.

net: Permite administrar usuarios, carpetas compartidas, servicios, etc. Para un listado completo de todas las opciones, escribir net sin ningún argumento. Para obtener ayuda sobre alguna opción en concreto, escribier net help opción.

netsh: Este programa en modo consola permite ver, modificar y diagnosticar la configuración de la red

netstat: Mediante este comando obtendremos un listado de todas las conexiones de red que nuestra máquina ha realizado.

nslookup: Esta aplicación se conecta a nuestros servidores DNS para resolver la IP de cualquier nombre de host. Por ejemplo, si ejecutamos nslookup y escribimos www.xdireccion.com, nos responderá con algo como:

Respuesta no autoritativa:
Nombre: www.xdireccion.com
Address: 217.76.130.250


Esto quiere decir que la dirección webwww.xdireccion.com corresponde con la IP 217.76.130.250.

pathping: Muestra la ruta que sigue cada paquete para llegar a una IP determinada, el tiempo de respuesta de cada uno de los nodos por los que pasa y las estadísticas de cada uno de ellos.

ping: Poniendo detrás del comando ping el nombre o la dirección IP de la máquina, por ejemplo ping 192.168.0.1 enviaremos un paquete a la dirección que pongamos para comprobar que está encendida y en red. Además, informa del tiempo que tarda en contestar la máquina destino, lo que nos puede dar una idea de lo congestionada que esté la red.

rasdial: Permite establecer o finalizar una conexión telefónica.

route: Permite ver o modificar las tablas de enrutamiento de red.

tracert: Muestra el camino seguido para llegar a una IP y el tiempo de respuesta de cada nodo.


Varios

at: Permite programar tareas para que nuestro ordenador las ejecute en una fecha o en un momento determinado.

logoff:: Este comando nos permite cerrar una sesión iniciada, ya sea en nuestro ordenador o en otro ordenador remoto.

msg:: Envía un mensaje a unos o varios usuarios determinados mediante su nombre de inicio de sesión o el identificador de su sesión

msiexec:: Permite instalar, desinstalar o reparar un programa instalado mediante un paquete MSI (archivos con extensión .msi).

runas: Permite ejecutar un programa con privilegios de otra cuenta. Útil por ejemplo si estamos como usuario limitado y queremos hacer algo que necesite privilegios de administrador.

shctasks: Permite administrar las tareas programadas.

shutdown: Permite apagar, reiniciar un ordenador o cancelar un apagado. Es especialmente útil si hemos sido infectado con el virus Blaster o una de sus variantes para cancelar la cuenta atrás. Para ello, tan sólo tendremos que utilizar la sintaxis shutdown -a.


Microsoft Management Console (MMC)

Estos comandos nos darán acceso a distintas partes de la Microsoft Management Console, un conjunto de pequeñas aplicaciones que nos permitirán controlar varios apartados de la configuración de nuestro sistema operativo.

Para acceder a estas opciones, no es necesario entrar en la consola del sistema (cmd.exe), sino que basta con introducirlos directamente desde inicio - ejecutar.

ciadv.msc: Permite configurar el servicio de indexado, que acelera las búsquedas en el disco duro.

compmgmt.msc: Da acceso a la Administración de equipos, desde donde podemos configurar nuestro ordenador y acceder a otras partes de la MMC.

devmgmt.msc:: Accede al Administrador de dispositivos.

dfrg.msc: Desfragmentador del disco duro.

diskmgmt.msc: Administrador de discos duros.

fsmgmt.msc: Permite administrar y monitorizar los recursos compartidos.

gpedit.msc: Permite modificar las políticas de grupo.

lusrmgr.msc: Permite ver y modificar los usuarios y grupos locales.

ntmsmgr.msc: Administra y monitoriza los dispositivos de almacenamientos extraíbles.

ntmsoprq.msc: Monitoriza las solicitudes del operador de medios extraíbles.

perfmon.msc: Monitor de rendimiento del sistema.

secpol.msc: Configuración de la política de seguridad local.

services.msc: Administrador de servicios locales.

wmimgmt.msc: Configura y controla el servicio Instrumental de administración (WMI) de Windows.

miércoles, 28 de mayo de 2008

Configuración de Apache, Mod_JK y glassfish

A menudo se suele usar un apache como servidor de aplicaciones que redirecciona las peticiones a nuestro glassfish con nuestra aplicación J2EE. ¿Porqué se hacer esto? pues puede que tengas varios servicios en esa misma máquina, imaginate que quieres tener un servicio en php que va de sobra con un apache por el puerto 80, pero ahora necesitas colgar el nuevo servicio en J2EE para lo que apache no da soporte. Tambíen destacar que la gestión de peticiones y la compresión del tráfico de datos es mucho más eficiente en apache que en glassfish, por este motivo mucha gente suele usar estos dos servidores web en conjunción para trabajar. Y Mod_jk no es más que el modulo que nos permitira conectar apache y glassfish.


Instrucciones paso a paso:

a) aptitude install apache2 libapache2-mod-jk

b) Descargar:
http://java.net/download/javaee5/v2ur2/promoted/Linux/glassfish-installer-v2ur2-b04-linux.jar

c) Seguir estos pasos:
Establecer JAVA_HOME al JDK que tengamos.
Lanzar:
% sudo java -Xmx256m -jar glassfish-version-que-seea.jar
Esto descomprime el glassfish y crea una nueva estructura.
% cd glassfish
Damos permisos al ant de glassfish:
% chmod -R +x lib/ant/bin
% lib/ant/bin/ant -f setup.xml

Si queremos soporte a clustering (garantizaría disponibilidad absoluta del servicio), cambiamos lo anterior por:
% lib/ant/bin/ant -f setup-cluster.xml

d) Abrimos /etc/apache/httpd.conf y le copiamos estas líneas:

JkWorkersFile /etc/apache2/worker.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send all jsp requests to GlassFish
JkMount /*.jsp worker1
# Enviar peticiones de clg-web a Glassfish
#JkMount /clg-web/* worker1
JkMount /* worker1

e) ahora descargamos una instalación de tomcat exclusivamente para copiar el archivo tomcat-ajp.jar
Pensé que podría descargarlo de aquí (tomcat6), por aquello de ser una versión más nueva:
http://ftp.udc.es/apache-dist/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz
Pero no trae el archivo tomcat-ajp.jar, así que lo sacamos de aquí:
wget http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.16/bin/apache-tomcat-5.5.16.tar.gz

f) Copiamos esto:
/opt/glassfish/lib# cp /opt/apache-tomcat-5.5.16/server/lib/tomcat-ajp.jar .

g) Hacemos lo mismo con:
http://apache.rediris.es/commons/logging/binaries/commons-logging-1.1.1-bin.tar.gz
Y luego:
/opt/glassfish/lib# cp //tmp/commons-logging-1.1.1/commons-logging-1.1.1.jar commons-logging.jar
Y lo mismo con:
http://apache.rediris.es/commons/modeler/binaries/commons-modeler-2.0.1.tar.gz
Y con:
/opt/glassfish/lib# cp /tmp/commons-modeler-2.0.1/commons-modeler-2.0.1.jar commons-modeler.jar

g) Por último, habilitamos mod_jk, arrancando primero Glassfish (asadmin start-domain domain1)y luego:

asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009

domingo, 18 de mayo de 2008

Integrar Spring con Struts

¿Cómo podemos usar Spring como framework para la capa de negocio y struts para la presentación?

El problema radica en que Spring es un framework empresarial "ligero". De esta forma, su tecnología IoC (inyección de dependencias) solo tiene alcance en el propio framework Spring y no inyecta dependencias en Struts. Si no inyecta dependencias en Struts, ¿como podemos desde struts llamar a los métodos de negocio implementados por Spring? En este tutorial intentaremos dar respuesta a esta pregunta. Tenemos el fichero de configuración de Struts que tendrá la información pertinente a los ActionForm y los Action, principalmente, junto con otra información adicional como los global-exceptions, etc., el fichero de configuración de struts (struts-config.xml) ¡no es necesario tocarlo con este método que vamos a mostrar para integrar struts con spring!.

El único fichero que tocaremos será web.xml.

Pero antes de nada, vamos por partes:

1) Lo primero es tener el fichero de configuración de Spring que tendrá una pinta como esta (versión 2.5)




xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">





Podemos comprobar como se han activado con la línea el manejo de las anotaciones de las clases para que quede al más puro estilo EJB3. De este modo, las clases de negocio de Spring basta con anotarlas con @Service, por ejemplo:

/* Interfaz de negocio (el equivalente al @Local de EJB, nótese que no requiere anotación en Spring) */
package com.myapp.negocio;

public interface IUnServicio {

boolean login(String user, String pass);

}

/* Implementación de la interfaz, note que para indicarle a Spring que es un objeto de negocio se usa la anotación @Service (sería el "equivalente" a @Stateless de EJB3) */
package com.myapp.negocio;

import org.springframework.stereotype.Service;

@Service
public class UnGranServicioBean implements IUnServicio {
public boolean login(String user, String pass) {
return user.equals("jjj") && pass.equals("mmm");
}
}

Siguiendo con el fichero de configuración de Spring, la línea le indica a Spring que rastree todas las clases del paquete indicado en el atributo "package" en busca de aquellas que estén anotadas (en nuestro caso con @Service, aunque serviría @Component y @Repository) y mantenerlas (posibilidad de inyección de dependencias en otras clases, etc.,).

La última línea del fichero de configuración indica que se active la programación orientada a Aspectos (implementada por AspectJ que es el framework dónde se apoya Spring). De este modo si se encuentran Aspectos se compilan y tejen como si usáramos AspectJ.

Hay que tener en cuenta que para activar AspectJ necesitamos tener dicha librería en el PATH. En el framework de Spring si nos lo bajamos con las dependencias tenemos en la carpeta LIB el jar correspondiente a AspectJ por lo que en teoría no deberíamos de bajarnos nada más. Para integrar AspectJ con Spring basta con añadir al PATH una librería más, la librería correspondiente a AspectJ que se encuentra en la subcarpeta Module del framework de Spring.

Con el fichero de configuración de Spring, Struts y los @Service listos junto con las librerías de Spring necesarias, basta añadir las siguientes líneas al fichero web.xml para integrar Spring con Struts:



org.springframework.web.context.ContextLoaderListener


¿Cómo accedo, por tanto, al ApplicationContext de Spring para obtener los objetos de negocio?

Basta con cambiar la clase que hereda los Action por ActionSupport. Por ejemplo:

package com.myapp.struts;

import com.myapp.negocio.IUnServicio;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.springframework.web.struts.ActionSupport;

// Nota como la clase que hereda es ActionSupport en vez del clásico Action de Struts.
public class LoginAction extends ActionSupport {

private final static String SUCCESS = "success";

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
IUnServicio servicio = (IUnServicio) this.getWebApplicationContext().getBean("unServicio");
return mapping.findForward(SUCCESS);

}
}

Esta ActionSuppor nos permite sacar el contexto de Spring con getWebApplicationContext() y ahora si podemos sacar los objetos de negocio.

El nombre del objeto de negocio es el nombre de la interfaz en minúscula la primera letra. Por ejemplo, si nuestra interfaz se llama MiInterfaz, tendremos que preguntar por getWebApplicationContet().getBean("miInterfaz"). También hay que tener en cuenta que si seguimos la convención de que los nombres de las interfaces empiecen por 'I' latina mayúscula, Spring la omite para el nombre. De este modo, la interfaz IMiInterfaz la conseguiremos del mismo modo que MiInterfaz, preguntando por "miInterfaz".

Existen más métodos para integrar Struts con Spring. Este método es el más sencillo pero provoca que se acoplen Spring y Struts. Esto no debería ser un problema si la apuesta es segura. Los otros métodos requieren cambiar muchos parámetros de los ficheros de configuración de ambas herramientas lo que provoca, finalmente, que se acoplen a nivel de ficheros de configuración, por lo que personalmente prefiero este método que para desacoplar si, por ejemplo, se decide usar EJB en vez de Spring, bastaría con renombrar los ActionSupport por Action (un simple Replace All en cualquier IDE) y eliminar la línea de de web.xml.

Conexión a Base de datos con Java

Hay algunas aplicaciones chorras que tenemos que hacer de vez en cuando, que necesitan hacer una conexión a una bbdd y debido a lo pequeñas que son no merece la pena usar un motor de persistencia del tipo hibernate o toplink. En estos casos es importante tener claro como hacer conexiones a pelo desde java contra una bbdd con jdbc.

En este tutorial pongo el codigo java para hacer una conexión a una bbdd MYSQL y lanzar algunas consultas.

Codigo java

(Para que este codigo os funcione teneis que añadir el conector jdbc para mysql, en el caso de usar otra bbdd simplemente con cambiar el connector o driver es suficiente para que funcione. Lo interesante de jdbc es que nos hace de fachada y nos permite conectarnos de la misma forma con cualquier base de datos)

-----------------------------------------------------------------------------

import java.sql.*;


public class Connect
{
public static void main (String[] args)
{
Connection conn = null;

try
{
String userName = "nombre_usuario";
String password = "password_usuario";
String url = "jdbc:mysql://localhost/nombre_bbdd";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");

Statement s = conn.createStatement ();
int count;
count= s.executeUpdate(
"INSERT INTO revistas (idrevista, fecha, titulo , destino)"
+ " VALUES"
+ "('78','2007-11-22','esto va a pelo','va a pelitooo')");
s.close ();
System.out.println (count + " rows were inserted");

}
catch (Exception e)
{
System.err.println ("Cannot connect to database server");
e.printStackTrace();
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}

--------------------------------------------------------------------------

Espero que os sirva ;)

Configurar java en ubuntu

Tengo muchos amigos, en el trabajo que se vuelven locos instalando java. Y mira que es la cosa más tonta del mundo incluso te puedes bajar el Automatix que te lo instala solo. Ahora que ocurre cuando tienes varias versiones de java instaladas. Ohhh no tengo instalada la versión ultima de java pero me sigue saliendo la version 1.4.2 que viene por defecto con el sistema operativo. Oh no el eclipse no me arranca.... Bien pues os mostraré el super comando que lo arregla, y es que con poner en la consola:

> sudo update-alternatives --config java

Os saldran en forma de lista todas las versiones de java que tengais instalados en la maquina y simplemente seleccionado su numeración se configura el sistema para usar dicha versión.

Espero que os sea tan util como a mi ;)

Comandos de interés IV - SVN

Subversión es el sistema de control de versiones probablemente más usado, pero una vez que te acostumbras a trabajar con él, solo te dedicas a hacer update o commit. Bien pues esto es una vez que ya esta todo configurado, por ello creo interesante hacer este articulo sobre los comandos más usados en SVN a nivel de administrador, ya que se usan en contadas ocasiones y nunca las recuerdas por lo que tener una guía rápida donde mirar siempre viene bien

Espero que os sirva a todos también.

Crear un repositorio nuevo

svnadmin create nombre_repositorio

Añadir un árbol de directorios al repositorio

svn import path_al_directorio nombre_repositorio

Obtener una copia de trabajo

svn checkout file:///nombre_repositorio/dir directorio_de_trabajo

Obtener una copia sin control de versiones

svn export file:///nombre_repositorio/dir directorio_destino

Hacer una copia de seguridad de todo el repositorio

svnadmin dump nombre_repositorio > ficheroBackup

Restaurar una copia de seguridad en un nuevo repositorio

svnadmin create nombre_nuevo_repositorio
svnadmin load nombre_nuevo_repositorio < ficheroBackup

Ver el estado actual de la copia de trabajo

svn status

Añadir nuevos ficheros o directorios

svn add nombre_fichero

Eliminar ficheros

svn del nombre_fichero --force

Actualizar la copia de trabajo con los últimos cambios en el repositorio

svn update

Actualizar el repositorio con los cambios de tu copia de trabajo

svn commit -m "Mensaje para etiquetar los cambios"

Permitir accesos anónimos al repositorio (si se usa svnserve)

Editar el fichero nombre_repositorio/conf/svnserve.conf y descomentar según proceda las lineas:

# anon-access = read
# auth-access = write
NOTA: Sustituir file:/// por svn:///SERVIDOR si los repositorios están en otra máquina y se está usando svnserve.

SSH en windows

Hola a todos, como ya sabreis el protocolo SSH es una tonteria instalarlo en un linux, pero no en windows, existen todos los clientes que quieras pero los servidores suelen ser de pago.

Muchas veces ahi que copiar ficheros de un linux a un windows o viceversa y el protocolo SSH suele ser uno de los métodos más seguro.

En este tutorial os explicaré como instalar un servidor SSH en windows totalmente gratuito.





Lo primero que vamos a hacer es bajarnos el fichero de instalación de OpenSSH, que es la implementación libre, la cual dispone de una implementación sobre windows, aunque cuando lo instaleis podréis ver que es una emulación del ssh en linux.

http://sshwindows.sourceforge.net/

Descargais el ejecutable y lo instalais como cualquier juego que se instala en windows ;)

He podido comprobar que las ultimas versiones de OpenSSH para windows ya te configuran las variables de entorno y te crean el par de claves y llaves, por lo que no tenemos que preocuparnos por estos temas

Bien pues si comprobais la instalación vereis una estructura de carpetas muy similar a la de un linux, por eso podriamos decir que se está emulando este servicio.

Para poder tener acceso al servicio ssh necesitamos autenticar los usuarios para ello, cogeremos tomaremos todos los usuarios de la maquina windows y los exportaremos para OpenSSH:

en la carpeta /bin

> mkpasswd -l -u [usuario_del_sistema_windows] >> ..\etc\passwd (1 vez por cada usuario)

>mkgroup -l >> ..\etc\group (esto copia todos los grupos)

Bien, pues por ultimo arrancamos el servicio ssh.

>C:\net start opensshd



Tan facil como esto, ya tendremos SSH en windows ;)