SSH

¿Que es?

SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo del nivel de aplicación que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos sobre un flujo de datos fiable. Se utiliza comúnmente con SSH para proporcionar la seguridad a los datos, aunque permite ser usado con otros protocolos de seguridad. Por lo tanto, la seguridad no la provee directamente el protocolo SFTP, sino SSH o el protocolo que sea utilizado en su caso para este cometido.

En comparación de capacidades con el anterior protocolo SCP, que únicamente permite la transferencia de archivos (copia), el protocolo SFTP permite una serie de operaciones sobre archivos remotos. SFTP intenta ser más independiente de la plataforma que SCP, por ejemplo, con el SCP encontramos la expansión de comodines especificados por el cliente hasta el servidor, mientras que el diseño SFTP evita este problema. Aunque SCP se aplica con más frecuencia en plataformas Unix, existen servidores SFTP en la mayoría de las plataformas.

El Secure Internet Live Conferencing (SILC) define el protocolo SFTP como su protocolo de transferencia de archivos por omisión. En el SILC, los datos del protocolo SFTP no están protegidos con SSH pero el protocolo de paquetes seguros de SILC se utiliza para encapsular los datos SFTP dentro de los paquetes de SILC para que se la llevara de igual a igual (peer to peer, P2P). Esto es posible ya que SFTP está diseñado para ser un protocolo independiente.

Instalación

Para poder utilizar SSH necesitaremos el paquete ‘\emph{ssh}' para ello nos dirigimos a la terminal y tecleamos el siguiente comando.

  # apt-get install openssh

Luego para asegurarnos de que está el servicio corriendo tecleamos.

   # /etc/init.d/ssh restart

Acceso Remoto

Funciona en base a clave pública/privada.

Para ejecutar el cliente ssh en el terminal(consola, o shell) se ha de hacer lo siguiente:

  $ ssh -l login servidor

o

  $ ssh login@servidor

Siguiendo con la IP fija que de dimos al servidor nos conectamos al mismo con esta IP.

$ ssh 10.0.2.15

Inmediatamente (si es que hubo conexión) aparecerá un mensaje.

Si logramos ingresar todo esta listo.

Una vez iniciada la sesión la terminal local, trabajara como si fuera la del equipo al que estas accediendo, por lo que cualquier comando ya visto anteriormente, puedes usarlos tal cual, el cambio esta cuando quieres pasar archivos desde el computador local al remoto o viceversa.

Con SSH, los datos viajan encriptados y es uno de los sistemas mas seguros y usados actualmente.

Para los que necesiten en un momento dado, administrar su servidor desde una Terminal en un sistema sin Linux, esto no es un problema ya que hay varias utilidades para esto. Para Windows pueden usar el cliente llamado Putty y para MAC pueden usar el cliente para terminales MacSSH.

Envio/Recepción de Archivos

Para enviar/recibir existen diversos protocolos, al igual que la conexión remota

ftp, sftp, scp (en realidad trabajan sobre ssh).

Por razones de seguridad se utiliza scp o sftp.

La sintaxis en consola es la siguiente (es similar a cp).


Copiar un archivo:

$ scp login@servidor:nombre_archivo ruta/destino

Copiar un directorio:

$ scp -r login@servidor:directorio ruta/destino

Enviar un archivo:

$ scp archivo login@servidor:ruta/destino

Enviar un directorio:

$ scp -r directorio login@servidor:ruta/destino

Nota: logearse en el servidor antes.

Acceso Remoto Gráfico (SSH)

Desde las últimas versiones de Gnome, es posible acceder a entornos remotos, por medio de SSH de forma gráfica, lo que permite visualizar gráficamente el contenido remoto, como si de un directorio local se tratase.

Para realizar este proceso, solo debes hacer lo siguiente:

  1. Abrir una ventana de Nautilus.
  2. Seleccionar Archivo/Conectarse con el Servidor
  3. Ahora llenamos los campos de manera similar a la Figura.
  4. Por seguridad es preferible no seleccionar "recordad esta contraseña".
  5. Seleccionamos conectar y aparecerá en Nautilus, al lado izquierdo, en la sección "Red" una carpeta.

llenado de campos para conectarse por SSH gráfico

Algunos Comandos

Copiar una clave SSH a un host para que permita logins SSH sin password.

$ ssh-copy-id user@host

Iniciar un túnel SSH desde el puerto 80 de un host remoto al puerto 2001 de nuestra máquina local.

$ ssh –N –L2001:localhost:80 host_remoto

Ahora puedes acceder al sitio web remoto desde http://localhost:2001/

Comparar un archivo remoto con uno local.

$ ssh user@host cat /ruta/del/archivo\_remoto | diff /ruta/del/archivo_local

Montar carpeta/sistema de archivos por medio de SSH.

$ sshfs name@server:/ruta/de/carpeta /ruta/de/punto/de/montaje

Conexión SSH por medio de "host in the middle".

El host inalcanzable no está disponible desde la red local pero si es alcanzable desde la red del host alcanzable. Este comando crea una conexión al host inalcanzable por medio de una conexión oculta desde el host alcanzable.

$ ssh –t host_alcanzable ssh host_inalcanzable

Copiar desde host1 a host2 desde tu host.

$ ssh root@host1 "cd /directorio/a/copiar/ && tar –cf -." | ssh root@host2 "cd /directorio/destino/de/copia/ && tar –xf –"

Correr cualquier aplicación GUI remotamente.

$ ssh –fX user@host [aplicación]

Crear una conexión persistente a una máquina.

$ ssh -MNf user@host

\item Copiar una base de datos MySQL a un nuevo servidor vía SSH con un comando.

$ mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost "mysql -uUSER -pPASS NEW_DB_NAME"

Mantener abierta una sesión SSH para siempre.

$ autossh -M50000 -t server.example.com 'screen -raAd mysession'