Friday, December 12, 2008

SSH sin password y en puerto no estandar

Si necesitamos hacer sftp o ssh a una maquina remota sin tipear el password cada vez que queremos ingresar, hacemos lo siguiente:

ssh-keygen -t rsa

y le damos enter a TODO lo que pregunta (incluso el password, lo dejamos en blanco).

Esta operacion genera una llave publica y privada para nuestra maquina, entonces ahora lo que tenemos que hacer es copiar la llave publica a la maquina remota.
Ademas, de esta forma podemos copiarla via un puerto no estandar, como el 5678 en mi caso:

ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 5678 root@192.168.1.2"

Donde logicamente la maquina remota es 192.168.1.2 y el usuario remoto con el que nos interesa loguearnos es root.

Cabe aclarar que hay dos formas de generar las llaves, una es con el algoritmo DSA y otra con el RSA y se prefiere este ultimo ya que es mucho mas seguro.

Las llaves en la maquina remota quedan almacenadas en:

~/.ssh/authorized_keys2 para llaves RSA.
~/.ssh/authorized_keys para las viejas llaves DSA.

Como dato adicional agrego como conectar con SFTP y SSH en este puerto no estandar:

sftp "-oPort=5678" 192.168.1.2
ssh "-oPort=5678" 192.168.1.2


Saludos !

Monday, December 1, 2008

Unreal Tournament choppy/entrecortado (problemas con dual core)

Tengo una notebook con un procesador Intel Dual-Core, y al correr el Unreal Tournament se veia "acelerado" por demas, como si tuviese un cluster de maquinas corriendo el pobre jueguito.

No se porque ciertas maquinas tienen el problema y ciertas no, pero lo que si se es que encontre una solucion: habilitar solo un core para el juego.

Esto ultimo lo podemos lograr manualmente con el administrador de tareas clasico de windows, o bajarnos una aplicacion de la gente de tomshardware.com que se llama TaskAssign y que nos permite crear perfiles para cada aplicacion.

URL de la aplicacion:

http://images.tomshardware.com/2004/05/28/getting_more_bang_out_of_your_dual_processing_buck/taskassign.zip

Logicamente, elegimos el ejecutable UnrealTournament.exe y le asignamos un solo core.

Problema solucionado !

Un amigo me recomendo tambien que actualice el renderer de OpenGL para el UT (no tiene nada que ver con el problema en si, pero logramos mejor performance ya que estamos), que lo podemos bajar de aca:

http://cwdohnal.home.mindspring.com/utglr/

y el enlace directo es:

http://cwdohnal.home.mindspring.com/utglr/utglr34.zip

Y extraemos los archivos en C:\UnrealTournament\System sobreescribiendo el .dll existente.

Por lo general hay que iniciar el UT en "Safe Mode" y seleccionar "Change your 3D video device", luego "Show All Devices" y por ultimo elegir la opcion de "OpenGL support".

Eso es todo amigos !

Monday, November 24, 2008

Conociendo fuser (que proceso usa un socket o un sistema de archivos)

fuser es una utilidad que sirve para averiguar que proceso esta usando un archivo, socket o sistema de archivos.

El otro dia necesite saber que proceso estaba abriendo el puerto 113, entonces ahi vino fuser al rescate:

fuser -n tcp 113

lo cual me devolvio

113/tcp: 2786

El numero 2786 que vemos en la salida indica (en mi caso) que el proceso con numero 2786 esta abriendo el puerto 113 tcp. Por supuesto se puede cambiar el "space" y en vez de usar tcp, usar udp si es necesario.

Otro uso muy util es para averiguar que procesos estan usando un filesystem, y se usa de la siguiente manera:

# fuser -m -u /dev/sda3
/dev/sda3: 1rce(root) 2rc(root) 3rc(root) 4rc(root) 5rc(root) 6rc(root) 9rc(root) 10rc(root) 103rc(root) 143rc(root) 144rc(root) 145rc(root) 146rc(root) 595rc(root)

y la lista continua pero la corto por una cuestion de simplicidad ...

Lo que podemos ver en la salida del comando es el numero de proceso seguido por algunas letras y entre parentesis el propietario o usuario del proceso. Las letras que se ven tienen el siguiente significado:

c = current directory / directorio actual
e = executable being run / ejecutable siendo corrido
f = open file / archivo abierto
F = open file for writing / archivo abierto para escritura
r = root directory / directorio de root
m = mmap'ed file or shared library / archivo de mmap o libreria compartida

Espero que les resulte util como a mi ;-)

Saludos !

Thursday, November 20, 2008

TIP: Conectar con SSH o SFTP en otro puerto que no sea el 22

Supongamos que deseamos correr el daemon sshd en otro puerto que no sea el default (o sea, el 22) para evitar la mayoria de los escaneos por bots, e intentos de conexion por diccionario, u otro motivo si vamos al caso.

Modificamos el /etc/ssh/sshd_config en la linea de Port = 22 y le asignamos el numero de puerto que deseemos:

Port = 5000

Reiniciamos ssh con:

/etc/init.d/ssh restart

Y luego desde algun cliente podemos conectar, suponiendo que la IP de esa maquina es 192.168.1.1 al puerto 5000 de la siguiente forma:

sftp "-oPort=5000" 192.168.1.1
ssh "-oPort=5000" 192.168.1.1

Saludos !

Uso de la RAM para guardar datos con RAMFS o TMPFS

Hace algun tiempo se me ocurrio la idea de que seria util almacenar ciertos datos en la RAM debido a su velocidad de escritura, asi que me puse a investigar y encontre dos sistemas para hacerlo, uno RAMFS y el otro TMPFS.

Como montar ambos ? aqui va para los impacientes nuevamente:

mkdir -p /mnt/tmp
mount -t tmpfs -o size=10m tmpfs /mnt/tmp

o sino para ramfs, de la siguiente forma:

mkdir -p /mnt/ram
mount -t ramfs -o size=10m ramfs /mnt/ram

Con ambos comandos disponemos de 10 MB en RAM para escribir, pero con las siguientes diferencias:

- RAMFS crece dinamicamente, asi que si tenemos 1 GB de RAM y le seguimos tirando datos, ocupara toda la memoria e incluso ocupara SWAP (peligroso para mi gusto).

- TMPFS no crece dinamicamente, asi que si lo usamos como en el ejemplo, nunca nos iremos del limite de 10 MB, pero logicamente obtendremos los mismos errores al quedarnos sin espacio que con una particion llena en disco. No usa SWAP, por ende es el mas seguro de los dos.

Logicamente, podemos montar una particion con cualquiera de los dos sistemas al inicio en /etc/fstab como cualquier otro sistema de archivos.

Y por ultimo, una obviedad: al ser ambos sistemas de archivos alojados en la RAM, al desmontarlos o al reiniciar el equipo perdemos los datos, asi que hay que copiar los datos a algun otro lugar antes de desmontar o reiniciar.

El uso personal que le doy a todo esto es para almacenar las sesiones de php en un directorio especial, en el php.ini se puede cambiar con la directiva:

session.save_path = "/tmp/ramdisk"

Eso es todo amigos !

Editor Vim (explicación sencilla)

Increíblemente, después de años de usar linux para distintas cosas, recién ahora me pongo a ver como usar más o menos el famoso editor Vim.

El editor consta de 2 modos: Inserción y Comando

Para entrar en el modo Inserción basta con presionar la tecla "Insert" en nuestro teclado, y abajo a la izquierda vim nos avisa con "-- INSERT --" o si presionamos dos veces "Insert" con "-- REPLACE --" (obviamente con este último modo reemplazamos el texto).

Para salir del modo Inserción presionamos la tecla "Esc".

Cabe aclarar que vim se inicia en modo comando.

Los comandos que aprendi hasta el momento (los que me sirven a mi por lo menos) son los siguientes (nótese la diferencia entre mayúsculas y minúsculas):

h: mueve el cursor hacia la izquierda
j: mueve el cursor hacia abajo
k: mueve el cursor hacia arriba
l: mueve el cursor hacia la derecha

$: mueve el cursor al final de la linea
0: mueve el cursor al principio de la linea

v: marca una selección de texto
CTRL+v: marca una selección de texto libre (modo columna, similar a UltraEdit)
y: copia el texto seleccionado
x: corta el texto seleccionado
p: pega el texto después del cursor
P: pega el texto antes del cursor

u: deshace los cambios
U: deshace los cambios pero solo en la línea actual
CTRL+r: rehace los cambios

Para borrar un número de lineas, se puede presionar "d" mas el nro de lineas que deseamos borrar (ej: 3) y luego "d" nuevamente.

Tambien en el modo comando, al ingresar "dos puntos" o ":" podemos tipear diversos comandos, como pueden ser:

:q (salir)
:q! (salir sin guardar cambios)
:w (guardar archivo)
:wq (salir guardando el archivo)
:e nombre_archivo (abrir otro archivo en la misma consola)
:bn (proximo buffer/archivo, usado para moverse entre archivos si tenemos mas de uno abierto)
:bp (igual que :bn pero para ir al buffer previo)

Y para mi asombro (gracias Carlitos), vim tiene tabs. Para usar este modo debemos invocar vim de la siguiente manera:

vim -p archivo1.txt archivo2.txt archivo3.txt

Luego nos movemos entre tabs con los comandos :tabn y :tabp (para next/siguiente o previous/anterior respectivamente)

Tambien una vez dentro de vim se puede usar el comando :tabnew nombrearchivo para abrir un nuevo tab con otro archivo.

Por supuesto existen muchos mas comandos y tips para vim, estos son simplemente los comandos que permiten un uso básico (y que como ya dije, me sirven a mi).


Espero que les sea de utilidad

Saludos !

Problema con Samba y Windows Vista (NTLMv2)

Sin demasiada introducción (los impacientes, contentos), hay que cambiar estas líneas por las siguientes:

[global]
valid users = %S

por simplemente

[global]
users = %S

Además en los shares, lo mismo:

[www]
comment = sites
path = /www
users = %S # esta linea estaba con "valid users" antes
public = no
writable = yes
printable = no
create mask = 0700


Además es necesario ajustar en las máquinas Vista lo siguiente:

1) Abrir la consola "Local Security Policies" ejecutando el comando "secpol.msc" (solo disponibles en la version Bussiness y Ultimate).
2) Ir a Local Policies –> Security Options –> Network Security: LAN Manager authentication level.
3) Cambiar el valor de "NTLMv2 responses only" a "LM and NTLM – use NTLMV2 session security if negotiated".

Si tienen la version Home de Vista (que no tiene la consola secpol.msc como dije mas arriba) se puede cambiar el valor directamente desde el registro ejecutando el comando "regedit" y ajustando el siguiente valor de 3 a 1:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LMCompatibilityLevel

Como siempre, mucho cuidado al editar el registro a mano.

Esta configuración me permitió tener un mix de clientes con XP y Vista y seguir usando el sistema de autenticación con usuarios simples


PD: Disculpen, pero tengo Windows en ingles :-/

Followers

About me

Santa Fe, Argentina
Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.