SSH (Secure Shell) en un protocolo de red encriptado para realizar comunicaciones de datos de forma segura, conexiones a través de línea de comandos (shell), ejecución de comandos y otros servicios de red seguros entre dos equipos conectados en red. La comunicación se realiza a través de un canal seguro sobre una red insegura, utilizando un servidor (ejecutando un servidor SSH) y un cliente (ejecutando una aplicación cliente SSH).

El uso más frecuente es para acceder de forma remota al shell de sistemas Linux. También se puede utilizar para conectarse a equipos con Windows, aunque en ese caso es más frecuente el uso del Escritorio remoto. Los sistemas Linux más modernos, que dispongan de interfaz gráfica, también ofrecen servicios similares al escritorio remoto. El uso de SSH se hace más frecuente que el escritorio remoto cuando no se necesita un interfaz gráfico, ya que la conexión se hace de manera más rápida. Por ejemplo, es muy habitual para la configuración de servidores, en los que sólo es necesario editar archivos de texto, y ejecutar una serie de comandos.

SSH se diseñó como un reemplazo del servicio Telnet y otros protocolos de shell remoto, todos ellos menos seguros que SSH, ya que por ejemplo, transmitían las contraseñas de conexión en texto plano. SSH proporciona un protocolo de comuniciación que proporciona confidencialidad e integridad en los datos sobre una red insegura, como puede ser Internet.

Instalación del servidor SSH en Ubuntu

Para instalar el servidor SSH en una máquina con ubuntu basta con indicar la orden:

sudo apt-get install openssh-server

Clientes SSH

Para realizar la conexión a un equipo remoto que disponga del software de servidor SSH, es necesario disponer de una aplicación que haga las funciones de cliente SSH.

OpenSSH

Ubuntu y Mac OS X ofrece de manera predeterminada el cliente OpenSSH, por lo que no es necesario instalar nada más para hacer las funciones de equipo cliente SSH. Para ejecutarlo, tan sólo debes indicar el comando ssh.

En Windows, para usar SSH desde el Símbolo del sistema, debes instalar OpenSSH for Windows (de PowerShell) OpenSSH for Windows obteniéndo el instalador binario desde su página de descarga.

ssh01

Como puedes ver, al intentar ejecutarlo sin ningún parámetro, se muestra la ayuda donde puedes observar las distintas opciones de uso. En la página de ayuda de OpenSSH puedes encontrar el significado de cada opción, o cargando el manual con: man ssh.

Para realizar la conexión con un servidor, debes indicar la dirección IP o nombre de dominio del servidor, y si el nombre del usuario remoto que quieres utilizar es diferente al usuario local debes indicar previamente el nombre del usuario remoto seguido del símbolo @, siguiendo el siguiente formato.

ssh usuario_remoto@nombre_equipo_remoto

ssh usuario_remoto@direccion_IP_equipo_remoto

Una vez realizada la conexión, podrás realizar cualquier operación remotamente como si tuvieras abierta una sesión del terminal en el servidor, que puede encontrarse en cualquier punto alejado de tu equipo local, aunque siempre deben tener conexión de red entre ambos.

ssh04

Observa que la primera vez que realizas la conexión con un equipo remoto, se te informa de que te has conectado a un equipo al que previamente no te habías conectado nunca. En ese caso debes confirmar que consideras que el equipo al que estás conectando es realmente el equipo deseado (debes escribir yes). De esta manera, las próximas veces que te conectes a ese mismo servidor, no aparecerá este mensaje. Si un intruso quisiera hacer pasar un equipo direferente como si fuera el servidor al que te estás conectando, te volvería a aparecer el mensaje de que ese equipo no es conocido, y así detectarías al intruso, ya que se identifica a cada equipo con una clave a modo de huella (fingerprint).

ssh03

Putty

También puedes hacer la conexión a un servidor SSH de una manera más gráfica usando la aplicación Putty, disponible de forma gratuita para Windows y Linux.

La conexión al servidor se realiza indicando el nombre del servidor o su dirección IP.

ssh05

Al igual que en el caso anterior, la primera vez que se hace la conexión, hay que aceptar la huella del servidor.

ssh06

Facilita algunas cosas como usar el portapapeles (sólo hace falta seleccionar para copiar, y para pegar sólo hay que usar el clic derecho), cambiar el tamaño de la ventana o aspectos como los colores.

ssh07

SCP

El protocolo SCP (Secure copy) permite la transferencia de archivos entre un equipo local y otro remoto, o incluso entre dos equipos remotos. Está basado en el protocolo SSH.

Se puede hacer uso de SCP desde la línea de comandos a través de la aplicación con ese mismo nombre que incorpora OpenSSH o con la aplicación PSCPdescargable desde la misma web que Putty.

Su utilización básica sigue el siguiente formato:

Para descargar un archivo remoto:

scp usuario@equipo:/ruta/archivo /ruta/archivo_local

Para subir un archivo local a uno remoto:

scp /ruta/archivo_local usuario@equipo:/ruta/archivo 

Para copiar entre equipos remotos:

scp usuario@equipo1:/ruta/archivo usuario@equipo2:/ruta/archivo

or SCP is a means of securely transferring computer files between a local host and a remote host or between two remote hosts. It is based on the Secure Shell (SSH) protocol.

De una manera más gráfica, se puede utilizar SCP con la aplicación WinSCP para Windows. Al iniciar la aplicación te solicitará el protocolo a utilizar (SCP, SFTP o FTP), la dirección del servidor, usuario y contraseña de acceso al equipo remoto.

ssh08

Al ser un protocolo basado en SSH, la primera vez que se conecte con un servidor desconocido, solicitará la confirmación para almacenar la huella digital del equipo remoto.

ssh09

Una vez abierta la aplicación, observarás que tiene la misma estructura y funcionamiento que una aplicación cliente FTP gráfica, donde puedes descargar y subir archivos arrastrando sus iconos de lado a lado.

ssh10

SFTP

De manera muy similar se puede utilizar SFTP (SSH File Transfer Protocol) que también permite realizar transferencias de archivos usando el protocolo SSH, aunque posibilita acciones más avanzadas que SCP como la pausa en la descargas, aunque SCP posee un algoritmo más eficaz que permite hacer las descargas más rápidas.

Las aplicaciones clientes se pueden encontrar de la misma manera que SCP, es decir, con el comando SFTP de OpenSSH, PSFTP de Putty o de manera gráfica con WinSCP para Windows, o Cyberduck para Windows y Mac.

sudo en WinSCP con SFTP

Con WinSCP empleando el protocolo SFTP es posible realizar acciones que requieren permisos de usuario root (sudo) como editar determinados archivos del sistema. Para ello, antes de realizar la conexión, especifica en la configuración (activando las opciones avanzadas) dentro de la sección Entorno > SFTP, que vas a usar como servidor SFTP el siguiente: 

sudo -s /usr/lib/sftp-server

ssh11

Además, en la máquina con Ubuntu debes indicar que tu usuario puede realizar acciones sudo sin necesitar una contraseña. Para ello, añade en el archivo /etc/sudoers la línea:

tu_usuario ALL=NOPASSWD: ALL