Conexión via SSH


SSH es un protocolo de red que permite iniciar sesión en un computador remoto, se caracteriza por ser seguro (encriptación) y por mantener la integridad de los datos.

Es posible utilizar los equipos del laboratorio de forma remota, para hacer esto se deben seguir los siguientes pasos:

Desde Linux:

  • Abrir una terminal en el computador.
  • Escribir uno de los siguientes comandos:

ssh <username>@ssh2.inf.utfsm.cl ssh <username>@ssh3.inf.utfsm.cl

Debe reemplazar <username> por su nombre de usuario.

Esto solicitará establecer una conexión con al servidor ssh2 el cual lo redirigirá algún computador del laboratorio que se encuentre con poca carga.

  • En caso de ser la primera conexión preguntará si estamos seguros de querer conectarnos, a lo que se debe responder yes.
  • Escribir la contraseña de la cuenta.

Desde Windows:

  • Descargar la aplicación PuTTY.
  • Al abrir la aplicación aparecerá una ventana, en la sección Host Name escribir:

ssh user@ssh2.inf.utfsm.cl ssh user@ssh3.inf.utfsm.cl

  • Hacer click en Open.
  • Si es la primera conexión aparecerá una ventana emergente a la cual se debe hacer click en Sí.
  • Escribir el nombre de usuario.
  • Escribir la contraseña.

Una vez establecida la conexión

Tras ingresar su contraseña, entrará a una sesión por terminal con el intéprete bash, y podrá ejecutar comandos como cd o ls para navegar por sus archivos y, por ejemplo, editar documentos con el editor vim.

Enviar archivos a la cuenta

Desde la terminal Ud. también puede enviar archivos a su cuenta a través del protocolo SSH, el comando para esto sería:

scp -R <origen> <username>@ssh2.inf.utfsm.cl:~/<destino>

Nota: El parámetro -R es para copiar recursivamente, cuando se trata de una carpeta, debe quitarlo si sólo quiere copiar un archivo.

Recuerde que se utiliza desde su computador, no una vez haya accedido con el comando ssh.

Recibir archivos de la cuenta

Para esto sólo tiene que utilizar el comando a la inversa:

scp -R <username>@ssh2.inf.utfsm.cl:~/<origen> <destino>

Otras consideraciones

Dejar un comando en ejecución

Si Ud. quiere dejar corriendo un programa por más tiempo de lo que dure la conexión, deberá utilizar el comando screen, de la siguiente manera:

screen <comando a ejecutar>

Se abrirá una nueva tty, de la que podrá escapar con la combinación de teclas Ctrl+A Ctrl+D, pero que quedará corriendo en segundo plano incluso hasta después de que Ud. se desconecte.

Para listar las screens corriendo actualmente:

screen -list

Para retomar creen en ejecución:

screen -r <id de la screen>

En caso de "Remote Host Identification Has Changed"

La primera vez que Ud. se conecte a cualquiera de los servidores ssh del laboratorio, es posible que su computador guarde la identificación de la máquina a la que se conecte, es posible que, por razones de mantención, renovemos la identificación MAC de los servidores y, por motivos de seguridad el comando ssh le falle con un error "Remote Host Identification Has Changed".

Un error como el siguiente:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:<numero> RSA host key for ras.mydomain.com has changed and you have requested strict checking. Host key verification failed.

Si Ud. se encuentra en apuros podría resolver esto eliminando la línea que contiene la identificación anterior (que no coincide con la nueva) en el archivo known_hosts (la ubicación de este archivo y el número de línea se indican en el mensaje de error).

Se puede utilizar, por ejemplo, el siguiente comando para borrar de manera más automática la línea del archivo known_host que produce el error en el ejemplo anterior:

sed -i <numero>d /home/user/.ssh/known_hosts

Reemplace por el número que entregue el error.

No obstante este error también podría aparecer si alguien está espiando su conexión y debe estar seguro de que ese no es el caso, por ende, sería bueno que antes de hacer este procedimiento consulte a los ayudantes del laboratorio, si hubo un cambio de identificación (que, por cierto, son muy poco frecuentes).


Además existen otras formas de poder acceder vía Windows, a continuación presentamos las más usadas:

1.- WinScp (interfaz gráfica para mover documentos)

2.- Bash

*Hay que mencionar que para poder llevar a cabo la conexión ssh desde Windows por cualquier camino, hay que tener instalado putty, que es el que nos generará la conexión. Se puede descargar directamente desde su página oficial

1. WinScp (interfaz gráfica para mover documentos)

  • Descargar el programa WinSCP desde su página oficial
  • Instalar y seguir las Instrucciones
  • Una vez instalado y abierto el programa rellenar los datos de la pestaña de conexion con:

    • Nombre o IP del servidor: ssh3.inf.utfsm.cl o ssh2.inf.utfsm.cl
    • Usuario: nombre de usuario en el DI
    • Contraseña: contraseña del usuario

    Cabe destacar que el nombre de usuario y contraseña no son del todo necesarios, si no se ingresan, una vez se establezca la conexión el programa los pedirá automáticamente

  • Si se desea conectar a un tarro en específico se debe entrar por tunel. Ingresamos a "Avanzado" en la pestaña de sesión, vamos a Conexión -> Túnel habilitamos "Conectar por túnel SSH" e ingresamos:

    • IP o nombre: ssh3. inf.utfsm.cl o ssh2.inf.utfsm.cl
    • Usuario y contraseña del DI.

    Aceptamos y en la pestaña de sesión en "Nombre o IP del servidor" elegimos el nombre del computador específico al que queramos conectarnos (e.g. baron, cordillera, etc)

  • Sea cual sea la conexión que elijamos guardamos y damos a "Conectar" y debería mostrarnos la interfaz gráfica de nuestro escritorio para poder mover de manera fácil archivos desde nuestra computadora al Laboratorio de Computación o viceversa

2. Bash

Una vez tengamos instalado el programa Putty en nuestra computadora, vamos a UPDATE & SECURITY (actualización y seguridad en español), en la configuración de Windows 10.

En la lista de la izquierda seleccionamos "For developers" (Para programadores), y en la sección que se abrirá en las funciones para programadores seleccionamos "Developer mode" (reiniciamos en caso que se nos pida).

Con el modo de programador activado, vamos a inicio de windows y buscamos "Turn Windows Features on or off" (Activar o Desactivar las características de Windows), y en la ventana que nos aparecerá buscamos y activamos el "subsistema de Windows para linux", apretamos ok y cerramos.

Presionamos la combinación de teclas Windows + R para abrir la herramienta de ejecución de windows y escribimos "bash", con esto se abrirá una consola en la que se nos preguntará si deseamos instalar Ubuntu en Windows, seguimos los pasos de la instalación en los cuales se nos descargará lo necesario para hacer funcionar el subsistema además de pedirnos crear un usuario y contraseña para la nueva sesión de linux que crearemos (no necesariamente debe ser el mismo de Windows).

Con esto podemos entrar directamente usando los comandos comunes de linux como ssh a la red del DI (ssh user@ssh2.inf.utfsm.cl o ssh user@ssh3.inf.utfsm.cl para poder conectarnos a un computador random del Labcomp).

Si aún no permite la entrada:

Si el sistema aún no permite la entrada directa desde ssh con el subsistema instalado, habrá que activar el servidor ssh en ubuntu, para esto, estando en la consola de bash tipeamos: sudo apt-get install openssh-server. Con esto deberiamos instalar el paquete básico para poder hacer funcionar ssh, ahora configuraremos el archivo sshd_config, escribimos: sudo vi /etc/ssh/sshd_config.

Apretamos "/" para poder buscar y escribimos "PermitRootLogin", presionamos "i" para editar y cambiamos el valor actual de la variable por "no", "Escape" para salir del modo de edición.

Apretamos nuevamente "/" para poder buscar y escribimos "PasswordAuthentication", necesitaremos cambiar este valor a "yes".

Hacemos el mismo proceso para cambiar el valor de UsePriviledgeSeparation a "no".

Apretamos "Escape", y apretamos "G" (mayúscula) para poder ir al final del documento, donde agregaremos la linea AllowUsers "user", donde reemplazamos "user" por el nombre de usuario seleccionado al crear la cuenta linux

Apretamos "Escape" para salir del modo de edición y "ZZ" para grabar y cerrar.

De regreso en la consola Bash escribimos sudo service ssh --full-restart para poder reiniciar el servidor ssh, y ahora debería poder conectarse sin problemas.

Fecha: 20 Mar, 2016
Autor: hvalenci