SSH

  • El servicio SFTP (SSH File Transfer Protocol o Secure File Transfer Protocol) es un protocolo de red que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos a través de una conexión segura. Básicamente se trata de un protocolo FTP (File Transfer Protocol) a través de una conexión SSH para proporcionar seguridad a los datos. Por lo tanto, la seguridad no la provee directamente el protocolo SFTP, sino SSH.

    Este artículo explica cómo instalar FileZilla en CentOS y luego abrir una conexión SFTP con un servidor remoto para transferir y manipular archivos y directorios.

  • En el artículo Cómo autenticar con clave pública en SSH expliqué detalladamente todos los pasos necesarios para autenticar con clave pública un usuario a través de SSH.

    Para que el usuario con el que ejecutamos ansible (en este caso root) sea capaz de autenticar con clave pública (sin contraseña) en los servidores, será necesario agregar la clave pública del mismo en cada archivo authorized_keys perteneciente al usuario con el cual queremos autenticar en cada sistema remoto. Es una tarea tediosa, pero debe realizarse una única vez.

  • Este artículo explica cómo habilitar el servicio SSH a un host VMware ESXi desde el cliente vSphere, para acceder de forma remota a una shell en el hipervisor.

  • Tal como mencioné en el artículo ¿Cuáles son las principales diferencias entre los sistemas GNU/Linux y OpenBSD?, OpenBSD utiliza CVS como sistema de control de versiones. Específicamente utiliza CVS anónimo para mantener actualizada una copia local del source tree de OpenBSD, respecto a los cambios hechos en los fuentes actuales de OpenBSD. Este mecanismo es un sistema de control de versiones "tolerante" en el sentido que respeta los cambios realizados en una copia local, y hace el "mejor esfuerzo" para actualizar el source tree completo, más que dejar una lista de problemas a resolver antes de continuar (tal como ocurre con otros sistemas de control de versiones).

  • ¿Cansado de tener que tipear el usuario y contraseña cada vez que ejecutamos un push hacia GitHub? Este artículo explica cómo configurar la autenticación con clave pública por SSH para no tener que tipear nuestro usuario y clave nunca más.

  • En este artículo voy a explicar cómo autenticar una sesión SSH utilizando clave pública, para permitir que un usuario se conecte a un sistema remoto sin necesidad de escribir la contraseña. Esta configuración es útil para cuando se requiere trabajar con scripts que se conectan a sistemas remotos de forma automática desde tareas programadas, por ejemplo los sistemas de respaldo (backup).

  • En entregas anteriores expliqué cómo transferir archivos de forma segura utilizando SCP y cómo transferir archivos entre sistemas remotos utilizando SSH (sin FTP, SFTP o SCP). Secure Copy (SCP) permite copiar archivos desde/hacia sistemas remotos utilizando SSH, mientras que SSH permite realizar casi la misma tarea utilizando un túnel y controlando la entrada y salida estándar en ambos extremos.

    Sin embargo, estas dos técnicas permiten solo crear o sobrescribir en el filesystem destino. Pero, ¿qué pasa si en lugar de sobrescribir necesitamos agregar contenido (append) a un archivo existente?

    En este breve artículo voy a explicar cómo es posible hacerlo, para que aprendamos juntos a dominar SSH like a boss.

  • Este artículo explica cómo configurar un acceso SFTP restringido para un usuario no privilegiado. Restringido en el sentido de que este usuario sólo pueda moverse dentro del directorio al que se le da acceso, y sea incapaz de siquiera ver qué archivos existen fuera del mismo. Es el ejemplo clásico en el que se debe limitar el acceso a un desarrollador o cliente al directorio de trabajo de su sitio Web, sin que pueda "salir" fuera del mismo (chroot).

  • A veces necesitamos acceder a alguno de nuestros servidores para realizar tareas de mantenimiento y no podemos usar SSH en el puerto estándar 22 debido a que estamos dentro de una red corporativa detrás de un firewall restrictivo. En este caso es posible crear un túnel SSH a través de un servidor proxy HTTP. Dependiendo del nivel de seguridad del firewall se podrá acceder por SSH por cualquier puerto o sólo por el puerto 443 (HTTPS).

  • A veces sucede que estamos trabajando en un servidor remoto a través de SSH y, luego de un tiempo de inactividad, la sesión se desconecta. En este artículo explico cómo mantener las sesiones SSH abiertas indefinidamente.

  • En este artículo voy a explicar cómo implementar un acceso como root (superusuario) a través de SSH cuando el servidor sshd no lo permite (está deshabilitada la opción PermitRootLogin):

    PermitRootLogin no
    

    Por seguridad, es lógico que todo servidor SSH impida el acceso como root. Sin embargo, es posible lograr implementar un acceso como root, lo cual puede simplificar el acceso para tareas administrativas o la copia de archivos a través de SFTP hacia directorios donde un usuario común no tiene acceso (por ejemplo, directorios de aplicaciones y servicios).

    Claro está que el mecanismo propuesto en este artículo es una configuración insegura, pero sirve a fines didácticos, para comprender que no basta con un simple PermitRootLogin no para impedir un acceso como root, sino que es posible evitar esta restrición con una simple configuración de sudo. Un ejemplo de cómo utilizar sudo con fines maliciosos.

  • Sí, leyeron bien: "Cómo instalar PuTTY en GNU/Linux". ¿Por qué alguien querría instalar PuTTY en GNU/Linux? No lo sé, solamente quería ver si es posible y sí, lo es.

    Para quienes no lo cocnozcan, PuTTY es una implementación libre de Telnet y SSH para las plataformas Windows y Unix, además es un emulador de terminal xterm. Está escrito y mantenido principalmente por Simon Tatham y es la aplicación estándar para acceder por SSH a sistemas Unix/Linux desde clientes Windows.

  • Recientemente realicé una instalación mínima de CentOS 6 y me dí cuenta de que es realmente mínima. Al intentar copiar unos fuentes desde otro servidor me topé con que SCP no estaba instalado.

  • En el artículo Cómo mapear una conexión SFTP en Windows utilizando Swish expliqué cómo instalar y configurar Swish en Windows para acceder vía SFTP a un servidor GNU/Linux Debian de forma transparente, para que la conexión luciera como un dispositivo de red mapeado. El problema con Swish es que no tiene la capacidad de crear archivos o directorios vía SFTP, y además no permite mapear el acceso SFTP como una unidad, sino como una conexión dentro de una carpeta de sistema.

    Luego de probar varias alternativas, finalmente encontré la solución a la medida de mis necesidades: win-sshfs - SSH(SFTP) filesystem for Windows. win-sshfs permite mapear una conexión remota vía SFTP a una unidad, como si se tratase de un dispositivo en red de Windows (network drive).

  • En este artículo voy a explicar cómo instalar y configurar Swish en Windows para acceder vía SFTP a un servidor GNU/Linux Debian de forma transparente. Para que la conexión luzca como un dispositivo de red mapeado.

  • Las claves de host son utilizadas por SSH como mecanismo de autenticación y seguridad. Típicamente se utilizan los algoritmos RSA, DSA o ECDSA para generar un par de claves pública/privada. Las claves de host se diferencian de las claves de autenticación en el hecho de que son utilizadas durante la conexión para establecer la autenticidad del host (cliente y servidor), no así del usuario, y evitar ataques de tipo MiM (man-in-the-middle).

    Típicamente es necesario regenerar las claves de host al clonar un servidor virtual, ya que cada host debe tener su par de claves únicas. Este artículo explica cómo generar un nuevo par de claves de host en un sistema de la familia Unix.

  • En este artículo voy a explicar cómo registrar fácilmente toda la actividad del protocolo SFTP para saber qué usuario crea/modifica/elimina qué archivo. Por defecto OpenSSH registra sólo quién se conectó exitosamente al servidor SSH, a través del log auth.log. Sin embargo, para el caso del servidor SFTP, es posible registrar todas las operaciones del protocolo FTP y saber exactamente qué usuario accedió a qué archivo.

  • Este artículo demuestra cómo subir archivos a un host remoto vía SSH (SCP o SFTP) desde un teléfono móvil con Android utilizando la aplicación AndFTP.

    AndFTP es un cliente FTP, FTPS, SCP y SFTP para Android. Permite almacenar varias configuraciones de FTP (similar a PuTTY y otros) e incluye un navegador de archivos locales y remotos. Con este cliente es posible subir y descargar con la capacidad de resumir conexiones. También permite renombrar, eliminar y cambiar permisos de archivos remotos. A su vez soporta el uso de autenticación SSH con clave pública con claves RSA y DSA.

  • Muchas veces necesitamos transferir archivos de un sistema a otro y queremos hacerlo de la forma más rápida y simple posible.

    Si tenemos acceso físico a ambos sistemas, tal vez lo primero que se nos ocurra sea utilizar un pendrive. Siempre que dispongamos de uno de capacidad suficiente para almacenar los archivos que necesitamos transferir (a veces pueden ser muchos gigabytes), y ambos sistemas tengan puerto USB. Al leer esta última oración piensen "qué ridículo, no puede haber una computadora sin puerto USB!!!". Es cierto, el puerto USB es un estándar de facto actualmente, pero ¿qué pasa si alguna de las máquinas es virtual? Es posible utilizar un pendrive, pero se necesita acceso al host, se debe mapear el pendrive en la máquina virtual, interactuar con el software de virtualización... La cosa se torna engorrosa.

  • Anteriormente demostré cómo configurar la autenticación SSH con clave pública en GitHub. Veamos como hacerlo ahora en una instancia local de GitLab.