Publi

  • Cómo especificar puerto y clave privada para SSH desde rsync

    reducida

    Si trabajamos a menudo con rsync para copiar archivos entre ordenadores, estaremos acostumbrados a una sintaxis parecida a esta:

    $ rsync -avh origen usuario@servidor:destino

    En realidad, para transmitir los archivos estaremos utilizando una conexión segura a través de ssh. Pero claro, en ocasiones, sería necesario utilizar algún argumento especial para ssh. En este ejemplo, imaginemos que queremos conectar al servidor por un puerto diferente del 22.

    Podemos hacerlo así:

    $ rsync -avh -e ‘ssh -p1234’ origen usuario@servidor:destino

    y si accedemos por par de claves pública-privada, en el caso de que queramos especificar un archivo de clave privada específico para esta conexión (a mí me ha sucedido que he necesitado utilizar rsync como root para poder acceder a algunos archivos y las claves las tenía en el usuario actual), lo podemos hacer así:

    $ rsync -avh -e ‘ssh -i archivo_identidad’ origen usuario@servidor:destino

    Ahora, un ejemplo completo y concreto de todo, en el que queremos acceder a nuestro servidor SSH por el puerto 28, además, el archivo de identidad o clave privada es id_rsa_webserver dentro del directorio .ssh de nuestro usuario (muy útil si ejecutamos rsync como root) luego el origen serían todos los archivos que encontramos en www/ y los copiaremos en un directorio remoto de nuestro servidor (tenemos que tener permiso para escribir ahí)

    $ rsync -avh -e ‘ssh -p28 -i /home/gaspar/.ssh/id_rsa_webserver’ www/* gaspar@miservidorweb.com:/home/web/externo/htdocs/

    Configuración local de ssh

    Otra posibilidad sería crear un archivo de configuración de ssh en nuestro ordenador, en el que podamos especificar los hosts a los que conectamos, el usuario que queremos utilizar, el archivo de identidad y el puerto.… Leer artículo completo

  • Servidor web seguro (HTTPS) en C usando openSSL (pruebas)

    Hace unos días veíamos un ejemplo de un cliente web SSL con ayuda de openSSL. Ahora vamos a hacer un servidor al que se pueda conectar. Se trata sólo de una prueba de concepto, nada que podamos utilizar en el mundo real, pero está bien para ver cómo funciona la biblioteca.

    Creando un certificado auto-firmado

    Lo primero que vamos a hacer es crear una llave y un certificado para utilizarlos.… Leer artículo completo

  • Conexión segura a un servidor web (HTTPS) en C usando openSSL

    Bueno, el código no tiene mucha más explicación. El objetivo es poder conectar a un servidor web a través de un protocolo seguro y recibir datos, pero también que podamos ver si hay algún problema con el certificado, verificar el algoritmo de cifrado y los datos del certificado, verificar los certificados intermedios, etc.

    Si ignoramos SSL, lo que tenemos que hacer es conectar con un servidor a través de un puerto determinado (como estamos en web, sería el puerto 80, por defecto), y mandarle una serie de datos:

    GET / HTTP/1.1[CRLF]
    Host: openssl.org[CRLF]
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0[CRLF]
    [CRLF]

    Por ejemplo.… Leer artículo completo

  • Mini servidor web con Bash y netcat para páginas en mantenimiento

    Foto: MTSOfan (Flickr CC-by)

    Cuando estamos trabajando en un servidor web, sobre todo si ya está siendo usado y hay páginas alojadas en él, y necesitamos irremediablemente pararlo todo para trabajar no podemos dejarlo todo tirado esperando que los usuarios no se enfaden (y peor, esperando que los buscadores no se enfaden, porque la ley de Murphy dice que aunque pares el servidor 10 minutos, va a venir Google a rastrear la página y colocar en tu resumen un precioso:

    …y cargarse todo el SEO de la página.… Leer artículo completo

  • Un hito en el blog 256 = 2^8 Me gusta en Facebook y otras cosas del 256

    Es un momento interesante y curioso en la historia del blog. Ya no puedo almacenar el número de likes de Facebook en un byte. Es una tontería, pero me ha hecho ilusión y dado el carácter el blog no podía dejarlo pasar.

    ¿Qué tiene de especial?

    Tal vez sea por la forma de sus dígitos, por su sonido al pronunciarse (personalmente me gusta más el 256 que el 512) o que es el número de combinaciones que se pueden formar con la unidad mínima de memoria direccionable en la mayoría de las arquitecturas de computadoras actuales.… Leer artículo completo

  • Variables compartidas entre procesos hijos en C [fork()]

    Otra forma de enfrentarse con la concurrencia, en el maravilloso mundo de hacer varias cosas al mismo tiempo, es utilizar procesos hijos con fork(). La principal diferencia con respecto a los threads es que éstos son procesos completos, es decir, el sistema operativo les ha dado una zona de memoria de código, otra de datos, y otra de pila, a diferencia de los threads que compartían código y datos, sólo tenían la pila diferente.… Leer artículo completo

  • Cliente TCP no bloqueante en C, en el que podemos enviar y recibir en cualquier momento

    Hace tiempo veíamos un artículo de un servidor que fuera capaz de aceptar múltiples conexiones, ahora, toca le toca el turno a la implementación del cliente.

    En principio, vamos a implementar un cliente sencillo, en el que conectaremos a un servidor y nos permitirá enviar texto que escribamos por teclado. No podremos recibir nada del servidor, pero nos servirá como primera aproximación:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <arpa/inet.h>
    #include <errno.h>
    #include <unistd.h>

    #define MENS_MAX_LEN 500

    void usage()
    {
      fprintf (stderr, "Wrong arguments.
    Leer artículo completo
  • Conocer la velocidad de descarga de nuestra conexión desde terminal

    A la hora de hacer un test de velocidad, muchas veces recurrimos a páginas que ofrecen aplicaciones Flash para hacer el test de velocidad, muchas veces Flash nos puede resultar incómodo, otras veces, estamos en un ordenador tan antiguo que no tira bien de Flash.

    Estos tests, suelen descargar un fichero relativamente grande, y dividen tamaño del archivo descargado por el tiempo empleado en su descarga, con lo que nos devuelven los Mb/s a lo que hemos descargado dicho archivo; suelen medir la velocidad de un conjunto muy complejo de elementos que están funcionando a la vez (por mencionar algunos de los más importantes):

    • El servidor que nos manda la información: Si el servidor está saturado, tal vez no nos mande la información al máximo de su velocidad
    • La conexión del servidor: Si la velocidad de subida del servidor es más pequeña que la velocidad de bajada del ordenador a analizar (por ejemplo si hacemos que nuestro ordenador envíe el test a casa de un amigo, el test no saldrá bien), si el proveedor de servicios ha penalizado la transferencia del servidor (a lo mejor por consumo excesivo de ancho de banda), o si el servidor tiene muchas peticiones simultáneas, tiene que repartir su ancho de banda entre todos.
    Leer artículo completo
  • No dejes que Flash te controle. Decide cuándo quieres activar plugins en tu navegador

    Es una característica esencial para nuestra navegación diaria en Internet. Y no sólo para Flash, sino para cualquier contenido web que accione un plugin dentro de nuestro navegador. Hace un año, mencionaba formas de controlar Flash, era muy interesante una extensión para Firefox, Stop Autoplay; aunque hacía mucho tiempo que la quitaron de los Addons de Mozilla, y desde Firefox 13 no funcionaba del todo bien.

    Firefox

    Aunque Firefox, desde la versión 14 (aunque no demasiado decentemente), y sobre todo desde la última versión 15, presenta la característica Click to play, que nos permite cargar una página, desactivando inicialmente todo lo que tenga que ver con plugins (Java, Flash, Acrobat Reader, LibreOffice, etc), con la posibilidad de que, si hacemos click sobre el contenido se carga automáticamente el plugin.… Leer artículo completo

  • Solucionar problema con «Timeout»s y «Broken pipe»s con ssh y scp

    fantasma

    En ocasiones, cuando la conexión SSH que tenemos establecida no es muy estable (a mi me surgía el problema con un dispositivo Wifi que en ocasiones se desconectaba y no podía transferir ficheros largos porque a mitad se desconectaba), puede que nos hayamos encontrado con este problema.

    Para solucionarlo, debemos editar /etc/ssh/sshd_config o /etc/sshd_config (dependiendo de nuestra distribución). Primero buscaremos la línea que comienza con ClientAliveInterval y pondremos su valor a 100 o menos (son los segundos para que el servidor envíe una señal al cliente para ver si está vivo).… Leer artículo completo