General Linux
From Wickle Wiki
Seccion de Tips and Tricks del sistema operativo Linux. Seguro que algo de esto es de utilidad en algun momento.
Teclado español Xfree 4 y Gnome
Problema: No funcionan las teclas < y >
Solucion: La gnome tiene su propio mapeo de teclas, asi que hay que ir a las opciones de teclado de gnome y poner "Generic 105-key(intl)", pues si tienes 104, esa tecla no la pilla.
Autenticacion automatica (sin passwd)
Problema: Lo que necesitamos es hacer un ssh a una maquina de la red sin que nos pida contraseña, pues el usuario es exactamente el mismo y las maquinas podrian ser un cluster tranquilamente. De modo que el objetivo es poder hacer "ssh -lusuario maquina2" y que no nos pida passwd .
Esto esta probado entre 2 solaris, entre 2 linux , y entre linux->Solaris y Solaris->linux
Solucion: Con el SSH protocol 1 se usaba el archivo .shosts (descendiente del .rhosts), pero ahora debemos generar un par de claves en el equipo cliente y despues copiarlas al equipo servidor: Opciones IMPRESCINDIBLES en el archivo de configuracion:
- RSAAuthentication yes
- PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys
/etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys RhostsAuthentication yes IgnoreRhosts no ChallengeResponseAuthentication no SyslogFacility AUTH LogLevel VERBOSE X11Forwarding yes UsePrivilegeSeparation no Subsystem sftp /usr/lib/ssh/sftp-server ChallengeResponseAuthentication no (desactivamos autenticacion mediante contraseña)
Entre linuxes/Unixes con ssh protocol 2
Como podemos comprobar, nos pide validacion para acceder a la maquina remota:
assc10-48:~ # ssh usuario@assc10-40 usuario@assc10-40's password: ****** Last login: Tue Oct 19 10:00:49 2004 from assc10-48 Have a lot of fun...
Generamos en nuestro ordenador (cliente le podemos llamar) el par de claves, publica y privada.
assc10-48:~ # ssh-keygen -t rsa (USANDO RSA) Generating public/private rsa key pair. Enter file in which to save the key (/home/usuario/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ********* Enter same passphrase again: ********* Your identification has been saved in /home/usuario/.ssh/id_rsa. Your public key has been saved in /home/usuario/.ssh/id_rsa.pub. The key fingerprint is: 97:1f:be:bd:f1:16:d2:81:f6:49:1f:49:8b:d9:b2:52
Copiamos la clave publica en el ordenador remoto
assc10-48:~ # scp /home/usuario/.ssh/id_rsa.pub assc10-40:/home/usuario/.ssh/authorized_keys2
Probamos la conexion:
assc10-48:~ # ssh usuario@assc10-40 Last login: Tue Oct 19 11:00:49 2004 from localhost Have a lot of fun... bash-2.05b$ exit Connection to localhost closed.
En este caso nos vale para pasar de root a usuario sin passwd y con ssh (no con su)
Ejemplo entre maquinas
bash-2.03$ uname -a SunOS asterix 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Fire-880 Solaris bash-2.03$ id uid=205(sifo_t) gid=400(sifo) groups=400(sifo),220(weblogic) bash-2.03$ ssh-keygen -t rsa bash-2.03$ scp /sicas/sifo_t/.ssh/id_rsa.pub 69.50.10.140:/home/dumbuser/.ssh/authorized_keys pasword:********* bash-2.03$ scp test_file 69.50.10.140:/home/dumbuser/test_file test_file 100% 226 0.2KB/s 00:00 bash-2.03$
Desde Windows a Linux con ssh protocol 2
Primero al igual que con Linux , generamos el par de claves (publica y privada)
assc10-48:~ # ssh usuario@localhost usuario@localhost's password: assc10-48:~ # ssh-keygen -t rsa (ALTERNATIVA QUE FUNCIONA ENTRE LINUX, USANDO RSA) Generating public/private rsa key pair. Enter file in which to save the key (/home/usuario/.ssh/id_rsa): Enter passphrase (empty for no passphrase): ********* Enter same passphrase again: ********* Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /home/usuario/.ssh/id_rsa.pub. The key fingerprint is: 97:1f:be:bd:f1:16:d2:81:f6:49:1f:49:8b:d9:b2:52 root@assc10-48 Copiamos la clave en el ordenador remoto assc10-40:~ # cat /home/usuario/.ssh/id_dsa.pub >> /home/usuario/.ssh/authorized_keys2
Ahora necesitamos copiar la clave privada (/home/usuario/.ssh/id_dsa) recien generada al windows.
Desde Windows abrimos el puttygen e importamos la clave privada para convertirla a una clave que entienda el putty.
conectamos el putty diciendole que emplee la clave privada que acabamos de exportar Probamos la conexion:
Linux en el AlphaServer 400 4/233
La consolita con fondo azul que nos aparece nada mas arrancar se llama SRM, para ver las unidades que hay en el servidor, discos duros, floppys, etc se pone :
>>>show dev >>>boot dva0 -flags 0 (arranca el diskette) >>>boot dka400 (arranca el HD1)
>>>boot dka0 (equivale a boot dka0.0.0.6.0)
Si se ha cascado algo : entramos en el aboot :
>>>boot dka0 -fl single (cualquier argumento para q casque el aboot y nos salga la consola) aboot> d boot (vemos el contenido del directorio boot) aboot> boot boot/vmlinuz-2.2.18pre21-generic ro root=/dev/sda1 single ARRANCAMOS EN SINGLE MODE !!!!
Referencias
http://www.debian.org/releases/stable/alpha/ch-rescue-boot.en.html#s-boot-from-floppies
IMAP over SSH
Contenido ampliado y actualizado en esta entrada de mi blog.
Problema
Tenemos el puerto 143 abierto al exterior para poder recoger correo mediante el protocolo IMAP desde casa, lo cual es un agujero de seguridad tremento si los usuarios que recogen el correo externo, pues la contraseña viaja en plano.
Solucion
La solucion pasa por establecer un tunel SSH mediante el cual introducimos todas las comunicaciones entre el cliente y el servidor para el protocolo IMAP.
Esta solucion es perfectamente aplicable para otros protocolos como SMTP.
Implementacion
Como establecer una conexion segura entre nuestro pc cliente y el servidor IMAP, esta visto que este es uno de los metodos mas seguros para recoger el correo de manera remota, usando ssh .... iniciamos un tunel SSH desde nuestra maquina local al servidor imap asi :
vic@coffman:~$ ssh -N -l victor -L 2143:localhost:143 server.imap victor@server.imap.ip's password:********
Establece un tunel desde la ip localhost:2143 hasta el server.imap:143
Luego solo tenemos que configurar el cliente de correo para q recoga el correo en local:2143
|----------- S S H T U N N E L ---------|
host: localhost <-----------------------------------------> server.imap
tcp port: 2143 143
Desde windows para establecer el tunel, podemos usar el putty con la opcion tunnel que trae incorporada en las ultimas versiones.
Referencias
http://www.maths.ox.ac.uk/help/faqs/security/email-over-ssh/
Como instalar la fuente MS Trebuchet en Linux
En debian ... instalar los siguientes paquetes :
- x-ttcidfont-conf
- defoma
- ttf-bitstream-vera
- ttf-freefont
- msttcorefonts (este es el que contiene las fuentes de microsoft)
Para este ultimo NECESITAMOS añadir al sources.list los paquetes contrib , pues es ahi donde esta, por ejemplo:
deb http://ftp.rediris.es/debian/ testing main contrib
Este paquete , se baja de internet la trebuchet y otras fuentes mas de windows.
Modificaciones al archivo /etc/X11/XF86Config:
A la seccion Files añadimos esto al inicio:
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
hacemos un rehash para que actualice las fuentes:
#xset fp rehash
y listo ... se puede probar con el openoffice, veremos como ya nos aparece la nueva fuente.
Warning: Es probable que necesitemos reiniciar las X.
Referencias
http://egads.ertius.org/~rob/font_guide.txt
http://packages.debian.org/testing/graphics/msttcorefonts.html
Obtener password encriptada para el CVS
Supongo que es equivalente para el passwd del CVS y pasa el del sistema:
perl -e 'print crypt "password", "sa"'
donde sa es el salto para generar la contraseña.
Manda mail con attachments desde la linea de comandos
Par aenviar un mail con attachments desde linux sin usar entorno grafico es necesario usar el uundecode (programa antiguo donde los haya)
uuencode archivo.pdf archivo.pdf | mailx -s "Ofertas de Empleo Publico" correo@correo.com
Mysql Debian conexiones TCP denegadas por defecto
Por defecto el Mysql que instalamos con la debian (via apt-get) viene con acceso externo (TCP) desactivado !!!! si, parece increible, pero es cierto ...
Solucion : Archivo de configuracion /etc/mysql/my.cnf Linea 41 : Comentamos:
skip-networking
añadimos :
bind-address = 127.0.0.1
este bind-address nos deja conectar UNICAMENTE desde el equipo local, para permitir accesos a nuestro mysql desde fuera debemos poner:
bind-address = 192.168.0.x para la interface de la red local ó
bind-address = 0.0.0.0 para cualquier interface
Error: Can't open display under Debian
Este es un extraño error, tienes perfectamente exportado el DISPLAY (export DISPLAY="192.168.0.18:0"), y aceptas conexiones remotas (xhost +), pero aun asi sigue dando este error al ejecutar xeyes en remoto.
Lo primero es mirar alguno de estos archivos buscando la opcion -nolisten tcp que hay que eliminar ...
/etc/X11/xinit/xserverrc
/etc/X11/xdm/Xservers
Si usamos GDM tambien deberemos cambiar el siguiente paramentro en el archivo /etc/X11/gdm/gdm.conf
DisallowTCP=false
a continuacion reiniciamos el gdm/xdm/kdm y listo.
Tambien debemos verificar que en el equipo desde donde hacemos el xeyes en el archivo /etc/ssh/sshd_config tenemos:
X11Forwarding yes
y en el archivo /etc/ssh/ssh_config tenemos:
Host * ForwardAgent yes ForwardX11 yes
Firewall iptables, bloquear puertos salientes a todas las IPs excepto a unas cuantas
Suponemos que tenemos una LAN en el rango 192.168.0.x y el router en la red 192.168.1.x , en el medio tenemos un firewall, necesitamos bloquear el acceso al correo externo directamente (puerto 25) para todos los equipos salvo un par de ellos, el 192.168.0.18 y el 192.168.0.2. Es importante insertar estas reglas del firewall en el Orden correcto, por eso usamos -I FORWARD y el numero 11 es el penultimo en mi lista de FORWARD's
iptables -I FORWARD 11 -s 192.168.0.0/24 -p tcp --dport 25 -j DROP iptables -I FORWARD 11 -s 192.168.0.18/32 -p tcp --dport 25 -j ACCEPT iptables -I FORWARD 11 -s 192.168.0.2/32 -p tcp --dport 25 -j ACCEPT
Screen para ejecutar tareas en segundo plano
screen es un fantastico comando para ejecutar una aplicacion en un servidor y desatachear la consola, de modo que la podamos recuperar mas adelante, yo la uso por ejemplo para lanzar el servidor Weblogic, o para lanzar el servidor de juegos counterstrike, etc ...
El comando para lanzarlo sería:
vic@whitewidow:~$ screen -A -m -S hlds ./hlds_run -game cstrike +map fy_iceworld +max_players 8
Parametros:
- -A adaptar el tamaño a la ventana actual
- -m fuerza la creacion de una nueva consola en vez de reusar la actual
- -S nombre de la consola (hlds) para poder recuperarlo despues
para desatachear la consola pulsamos CTRL-A+D (CTRL-A y a continuacion D)
Para listar la lista de consolas que tenemos atacheadas :
vic@whitewidow:~$ screen -ls
There is a screen on:
24141.hlds (Detached)
1 Socket in /var/run/screen/S-vic.
Y finalmente para recuperar la consola :
vic@mailserver:~$ screen -r hlds
Impresion a doble cara y 2 hojas por carilla (Cups - Epson)
Para imprimir a dos caras y con 2 hojas por cada carilla: (probado con Acrobat Reader - Debian - Cups )
/usr/bin/lpr -o page-set=odd -o number-up=2 -P Stylus-CX3650---CUPS+Gutenprint-v5.0.0 -o PageSize=A4
Le damos la vuelta como en el grafico windows de la epson (link) y volvemos a imprimir el resto de hojas:
/usr/bin/lpr -o page-set=even -o number-up=2 -P Stylus-CX3650---CUPS+Gutenprint-v5.0.0 -o PageSize=A4
Explicacion:
- page-set= odd -> imprime solo las impares
- page-set= even -> imprime solo las pares
- number-up=2 -> 2 hojas por cada carilla





