Diferencia entre revisiones de «Servidor ssh»

De Guía Ubuntu
Saltar a: navegación, buscar
m (Conexión a un servidor remoto)
Línea 1: Línea 1:
 
== ¿Qué es SSH? ==
 
== ¿Qué es SSH? ==
 
 
[[w:es:SSH|SSH]] (secure shell -intérprete de comandos seguro-) es un protocolo de comunicación para controlar un ordenador en remoto a través de una CLI (Command Line Interface -interfaz de línea de comandos- tb llamada: "shell"). Sirve para conectarnos con un ordenador ante el cual no estamos físicamente, bien porque está en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que están apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrónico, firewalls, etc...).  
 
[[w:es:SSH|SSH]] (secure shell -intérprete de comandos seguro-) es un protocolo de comunicación para controlar un ordenador en remoto a través de una CLI (Command Line Interface -interfaz de línea de comandos- tb llamada: "shell"). Sirve para conectarnos con un ordenador ante el cual no estamos físicamente, bien porque está en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que están apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrónico, firewalls, etc...).  
  
 
Es parecido a [[w:es:Telnet|Telnet]], con la gran diferencia de que en el caso de ssh, la información viaja codificada con lo cual es muchísimo más segura, en el caso de conectarnos a un ordenador que esté en nuestra [[w:es:LAN|LAN]] no es tan importante, pero si nos conectamos a través de Internet es fundamental, casi diría que imprescindible, usar un protocolo seguro como SSH.
 
Es parecido a [[w:es:Telnet|Telnet]], con la gran diferencia de que en el caso de ssh, la información viaja codificada con lo cual es muchísimo más segura, en el caso de conectarnos a un ordenador que esté en nuestra [[w:es:LAN|LAN]] no es tan importante, pero si nos conectamos a través de Internet es fundamental, casi diría que imprescindible, usar un protocolo seguro como SSH.
  
== Inslación del servidor SSH ==
 
 
El cliente ya viene instalado por defecto, de modo que para instalar el servidor de SSH en nuestro sistema lo único que necesitas es instalar el paquete '''openssh-server'''. Puedes leer [[Primeros pasos/Añadir aplicaciones|¿Cómo instalar aplicaciones?]] si no sabes como hacerlo.
 
 
== ¿Cómo permitir a ciertas cuentas ssh? ==
 
 
Cuando nos conectamos a una máquina a través del protocolo ssh coge el nombre del usuario que tenemos actualmente en la máquina local salvo que le demos uno con la opción -l. Ejemplo:
 
 
user1@maquina_local$ ssh maquina_remota >> nos conectamos a maquina_remota como "user1"
 
user1@maquina_local$ ssh -l user_remoto maquina_remota >> nos conectamos a maquina_remota como "user_remoto"
 
 
También se puede uno conectar así:
 
 
user1@maquina_local$ ssh user_remoto@maquina_remota.
 
 
De todas formas, tanto si usamos nuestro usuario como otro distinto, tanto si es con la opción -l o poniéndolo antes del nombre o IP de la máquina con arroba, el usuario tiene que estar:
 
 
a) dado de alta en la máquina remota
 
 
b) permitido que haga ssh
 
 
Para permitir hay que editar, como root, el archivo /etc/ssh/sshd_conf. Y añadir la línea AllowUsers y el nick o los nicks que deseamos que se puedan conectar en remoto via ssh.
 
 
== ¿Qué es un ataque man-in-the-middle? ==
 
 
Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo ''/home/[nuestro_usuario]/.ssh/known_host'' una entrada para esa IP.
 
 
Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo ''known_host'', en caso de variar supone que el ordenador es distinto, por ejemplo porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP. Ese es el error '''man-in-the-middle''' y significa: ''"el ordenador cuya IP es esa no es el mismo que yo conocía, puede ser que alguien se esté haciendo pasar por él"'' y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo ''known_host''. Tienes más información al respecto en el artículo de la Wikipedia [[w:es:Ataque Man-in-the-middle|Ataque Man-in-the-middle]].
 
 
== ¿Qué es el archivo /etc/hosts? ==
 
 
A veces queremos conectarnos a una máquina por su nombre en lugar de por su IP, porque es más fácil recordar WEBSERVER que 192.168.2.3 para ello editamos el archivo /etc/host. Como es un archivo de sistema pertenece a root así que en una consola o terminal tras el prompt "usuario@host:directorio$" tecleamos:
 
 
sudo gedit /etc/host
 
o
 
sudo vi /etc/host
 
 
 
== Conexión a un servidor remoto ==
 
== Conexión a un servidor remoto ==
 
 
Para conectarnos con un servidor SSH remoto desde Ubuntu tenemos un cliente por defecto, en Windows no, hay que descargar el Putty por ejemplo.  
 
Para conectarnos con un servidor SSH remoto desde Ubuntu tenemos un cliente por defecto, en Windows no, hay que descargar el Putty por ejemplo.  
 
Usar el cliente es muy sencillo: basta con teclear desde una consola o terminal lo siguiente:  
 
Usar el cliente es muy sencillo: basta con teclear desde una consola o terminal lo siguiente:  
Línea 63: Línea 24:
 
  $ xclock
 
  $ xclock
  
== ¿Cómo montar una unidad a través de ssh? ==
+
== Tipo de ataque man-in-the-middle ==
 +
Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo ''/home/[nuestro_usuario]/.ssh/known_host'' una entrada para esa IP.
 +
 
 +
Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo ''known_host'', en caso de variar supone que el ordenador es distinto, por ejemplo porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP. Ese es el error '''man-in-the-middle''' y significa: ''"el ordenador cuya IP es esa no es el mismo que yo conocía, puede ser que alguien se esté haciendo pasar por él"'' y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo ''known_host''. Tienes más información al respecto en el artículo de la Wikipedia [[w:es:Ataque Man-in-the-middle|Ataque Man-in-the-middle]].
  
 +
== ¿Cómo montar una unidad a través de ssh? ==
 
Para quienes les guste más el nautilus y necesiten coger archivos de un servidor ssh remoto o dejarlos en él se pueden montar unidades así:  
 
Para quienes les guste más el nautilus y necesiten coger archivos de un servidor ssh remoto o dejarlos en él se pueden montar unidades así:  
En Lugares >> Conectar con el servidor remoto  
+
En Lugares >> Conectar con el servidor remoto
+
  
 
== ¿Cómo enviar u obtener archivos y carpetas con scp? ==
 
== ¿Cómo enviar u obtener archivos y carpetas con scp? ==
 
 
 
En una consola o terminal tecleamos:  
 
En una consola o terminal tecleamos:  
  
Línea 82: Línea 44:
 
  $ scp usuario@maquina:/home/carpeta/* .
 
  $ scp usuario@maquina:/home/carpeta/* .
  
 
+
== Como hacer todo esto en modo gráfico ==
== Como hacer todo esto en modo grafico ==
+
 
+
 
Silo que que queremos es conectarnos a un ordenador por ssh en modo grafico tambien lo podremos hacer. Es mas simple pero tambien tienes menos posibilidades, o para hacer ciertas cosas tardas mas incluso que haciendolo por consola pero para las operaciones faciles como administrar, editar un fichero tambien es posible hacerlo de esta manera.
 
Silo que que queremos es conectarnos a un ordenador por ssh en modo grafico tambien lo podremos hacer. Es mas simple pero tambien tienes menos posibilidades, o para hacer ciertas cosas tardas mas incluso que haciendolo por consola pero para las operaciones faciles como administrar, editar un fichero tambien es posible hacerlo de esta manera.
  
Línea 90: Línea 50:
  
 
Elegiremos en el combbo de arriba en lugar de FTP publico, SSH y pondremos la IP o el nombre (en caso de anteriormente ya hallamos editado el fichero hosts) y asi despues de teclear la contraseña y aceptar estaremos ya dentro del mismo.
 
Elegiremos en el combbo de arriba en lugar de FTP publico, SSH y pondremos la IP o el nombre (en caso de anteriormente ya hallamos editado el fichero hosts) y asi despues de teclear la contraseña y aceptar estaremos ya dentro del mismo.
 +
 +
== Instalación del servidor SSH ==
 +
El cliente ya viene instalado por defecto, de modo que para instalar el servidor de SSH en nuestro sistema lo único que necesitas es instalar el paquete '''openssh-server'''. Puedes leer [[Primeros pasos/Añadir aplicaciones|¿Cómo instalar aplicaciones?]] si no sabes como hacerlo.
 +
 +
== Restringir el acceso SSH ==
 +
Para evitar que todos los usarios de la máquina estén accesibles por SSH tendremos que editar como ''root'' el fichero ''/etc/ssh/sshd_conf'', y añadir la línea '''AllowUsers''' y a continuación los usuarios que deseamos que se puedan conectar remotamente via SSH:
 +
 +
$ sudo gedit /etc/ssh/sshd_conf

Revisión de 16:55 11 jul 2006

¿Qué es SSH?

SSH (secure shell -intérprete de comandos seguro-) es un protocolo de comunicación para controlar un ordenador en remoto a través de una CLI (Command Line Interface -interfaz de línea de comandos- tb llamada: "shell"). Sirve para conectarnos con un ordenador ante el cual no estamos físicamente, bien porque está en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que están apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrónico, firewalls, etc...).

Es parecido a Telnet, con la gran diferencia de que en el caso de ssh, la información viaja codificada con lo cual es muchísimo más segura, en el caso de conectarnos a un ordenador que esté en nuestra LAN no es tan importante, pero si nos conectamos a través de Internet es fundamental, casi diría que imprescindible, usar un protocolo seguro como SSH.

Conexión a un servidor remoto

Para conectarnos con un servidor SSH remoto desde Ubuntu tenemos un cliente por defecto, en Windows no, hay que descargar el Putty por ejemplo. Usar el cliente es muy sencillo: basta con teclear desde una consola o terminal lo siguiente:

$ ssh host_remoto

Donde host_remoto es la IP del servidor SSH o su nombre de ésta. Eso hará que nos conectemos con nuestro nombre de usuario. Si queremos conectar como un usuario remoto teclearemos:

$ ssh usuario_remoto@host_remoto

Luego nos pide la password del usuario. La primera vez que nos conectemos a un servidor tarda un poco más y nos pide confirmación tecleando "yes" con todas sus letras, las subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto.

Si conectamos con el parámetro -X exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:

$ ssh -X usuario_remoto@host_remoto

Ahora si ejecutas el programa xclock verás que la ventana sale en tu escritorio:

$ xclock

Tipo de ataque man-in-the-middle

Imaginemos que la IP de nuestro servidor es 192.168.2.3. Nos conectamos via SSH desde otro equipo, la primera vez tarda un poco más porque tiene que escribir en el archivo /home/[nuestro_usuario]/.ssh/known_host una entrada para esa IP.

Las subsiguientes veces que nos conectemos compara la clave gpg de la IP con la que tiene guardada en el archivo known_host, en caso de variar supone que el ordenador es distinto, por ejemplo porque el ordenador servidor ssh ha sido formateado o porque se ha apagado y sustituido por otro al que se le ha asignado la misma IP. Ese es el error man-in-the-middle y significa: "el ordenador cuya IP es esa no es el mismo que yo conocía, puede ser que alguien se esté haciendo pasar por él" y no nos deja volvernos a conectar salvo que borremos la entrada de esa IP en el archivo known_host. Tienes más información al respecto en el artículo de la Wikipedia Ataque Man-in-the-middle.

¿Cómo montar una unidad a través de ssh?

Para quienes les guste más el nautilus y necesiten coger archivos de un servidor ssh remoto o dejarlos en él se pueden montar unidades así: En Lugares >> Conectar con el servidor remoto

¿Cómo enviar u obtener archivos y carpetas con scp?

En una consola o terminal tecleamos:

$ scp -r usuario@maquina:/home/carpeta . 

luego ponemos la password del usuario y nos copiará la carpeta "/home/carpeta" remota en el directorio actual "." naturalmente siempre que usuario tenga permisos sobre la carpeta y su cuenta esté entre las de los que pueden hacer ssh. La opción "-r" significa recursivo, es decir, copia la carpeta y todo su contenido, incluidas las subcarpetas y el contenido de éstas. Si no lo ponemos la órden para compiar todos los archivos de una carpeta sería:

$ scp usuario@maquina:/home/carpeta/* .

Como hacer todo esto en modo gráfico

Silo que que queremos es conectarnos a un ordenador por ssh en modo grafico tambien lo podremos hacer. Es mas simple pero tambien tienes menos posibilidades, o para hacer ciertas cosas tardas mas incluso que haciendolo por consola pero para las operaciones faciles como administrar, editar un fichero tambien es posible hacerlo de esta manera.

Entraremos en Lugares > Conectarse al servidor...

Elegiremos en el combbo de arriba en lugar de FTP publico, SSH y pondremos la IP o el nombre (en caso de anteriormente ya hallamos editado el fichero hosts) y asi despues de teclear la contraseña y aceptar estaremos ya dentro del mismo.

Instalación del servidor SSH

El cliente ya viene instalado por defecto, de modo que para instalar el servidor de SSH en nuestro sistema lo único que necesitas es instalar el paquete openssh-server. Puedes leer ¿Cómo instalar aplicaciones? si no sabes como hacerlo.

Restringir el acceso SSH

Para evitar que todos los usarios de la máquina estén accesibles por SSH tendremos que editar como root el fichero /etc/ssh/sshd_conf, y añadir la línea AllowUsers y a continuación los usuarios que deseamos que se puedan conectar remotamente via SSH:

$ sudo gedit /etc/ssh/sshd_conf