El blog de Alejandro Meroño

El blog de Alejandro Meroño Hernández

Administración remota con SSH  

SSH es un protocolo que permite iniciar sesiones seguras en máquinas remotas. Utiliza el puerto 22 y su objetivo es establecer conexiones remotas que permitan la transmisión segura de todo tipo de datos.SSH es parecido a Telnet, con la diferencia de que la información en el caso de SSH viaja encriptada. Con Telnet la transmisión entre el cliente y el servidor se realiza completamente en texto plano, por lo que cual sniffer puede capturar información y obtener, por ejemplo, el login y contraseña del usuario.

En este post se explicará como instalar SSH en Linux, concretamente yo he realizado las pruebas en Ubuntu Dapper, y cómo conectar con un ordenador que hace de servidor SSH tanto desde Linux como desde Windows.

¿Cómo se instala SSH?

En la consola (Aplicaciones/Accesorios/Terminal) escribimos:

  • sudo apt-get install ssh

Archivos de configuración de SSH

Los ficheros de configuración de SSH se encuentran en el directorio /etc/ssh. Los más importantes son los siguientes:

  • sshd_config: fichero que contiene los parámetros de configuración del servidor. Más adelante veremos algunos de esos parámetros.
  • ssh_config: fichero de configuración del cliente SSH.
  • ssh_host_rsa_key: clave RSA privada la máquina.
  • ssh_host_rsa_key.pub: clave RSA pública.
  • ssh_known_hosts: claves públicas RSA de otras máquinas.
  • ~/.ssh/authorized_keys: claves públicas del usuario para la autenticación.

¿Cómo conectar con un servidor remoto con SSH?

Desde la consola tecleamos:

  • ssh nombre_usuario@host

Si hemos modificado en el servidor el puerto utilizado por SSH (más adelante veremos cómo hacerlo), tendríamos que conectarnos al servidor añadiendo el parámetro -p seguido del número de puerto:

  • ssh -p 4440 nombre_usuario@host

Suponiendo que el puerto utilizado sea el 4440.

Si el nombre del usuario en el servidor coincide con el nombre de usuario en el cliente se puede omitir.La primera vez que un usuario conecta con el servidor SSH se pedirá confirmación para aceptar la clave pública del servidor, lo que hace que se añada al archivo ~/.ssh/known_hosts.


Fichero de configuración del servidor SSH

El archivo de configuración del servidor SSH se encuentra en /etc/ssh y se llama sshd_config. Este fichero lo podemos modificar con cualquier editor de texto como gedit. Para editarlo abrimos el terminal y escribimos:

  • gedit /etc/ssh/sshd_config

Veamos algunos de los parámetros más importantes de este fichero:

  • Port: indica el puerto de escucha del servicio SSH. Por defecto el puerto de escucha es el 22.

  • Protocol: indica la versión de protocolo que se utiliza. Normalmente se utiliza la versión 2.

  • X11Forwading: este parámetro permite ejecutar aplicaciones gráficas en el servidor (X11Forwading yes). Lo veremos más adelante.

  • PermitRootLogin: este parámetro indica si el administrador (root) puede conectarse al servidor SSH. Por motivos de seguridad no debemos permitir que el administrador pueda conectarse al servidor (PermitRootLogin no).

  • AllowUsers: con este parámetro indicamos aquellos usuarios que podrán conectarse al servidor. El resto de usuarios no podrán hacerlo. La lista de usuarios que tendrán permiso para conectarse al servidor deben ir en la misma línea separados por espacios. Si, por ejemplo, queremos que sólo puedan conectarse a nuestro servidor SSH el usuario con login ‘user1′ y el usuario con login ‘user2′, pondremos: AllowUsers user1 user2.

  • LoginGraceTime: es el número de segundos que tiene un usuario remoto para hacer login en el servidor SSH.

  • MaxAuthTries: es el número de intentos que tiene el usuario remoto para hacer login.

  • MaxStartups: define el número máximo de usuarios que pueden estar conectados simultáneamente al servidor SSH.

¿Cómo reiniciar el servidor ssh?

El servidor ssh se reinicia escribiendo en la consola lo siguiente:

  • sudo /etc/init.d/ssh restart

Lo tendremos que hacer cada vez que hagamos algún cambio el archivo de configuración del servidor.

¿Cómo ejecutar aplicaciones gráficas en el servidor?

Para ejecutar aplicaciones gráficas en el servidor tenemos que habilitar la opción X11Forwading, editando el fichero de configuración del servidor (/etc/ssh/sshd_config). Esta opción también debemos habilitarla en el fichero de configuración del cliente (/etc/ssh/ssh_config). Para habilitar esta opción tan solo tendremos que poner: X11Forwadig yes.Después tendremos que acceder al servidor SSH con el parámetro -X:

  • ssh -X usuario@máquina_remota

Si ejecutamos xclock, por ejemplo, veremos que aparece una ventana con el reloj en nuestro escritorio.

¿Cómo realizar transferencias de ficheros vía SSH?

Para realizar transferencias de ficheros entre cliente y servidor utilizamos el comando scp.Si queremos copiar un archivo al servidor escribiremos en el terminal:

  • scp archivo_local usuario@máquina:archivo_remoto

archivo_local es el archivo que se encuentra en la máquina del cliente. archivo_remoto es el nombre que daremos al archivo en el servidor.Si lo que queremos es copiar en nuestra máquina un fichero que se encuentre en el servidor escribiremos:

  • scp usuario@máquina:archivo_remoto archivo_local

El siguiente ejemplo copia un fichero llamado prueba.txt, que se encuentra en la carpeta /home/user1/, al directorio actual de trabajo.

  • scp user1@máquina:/home/user1/prueba.txt .

Con scp también podemos copiar directorios enteros:

  • scp usuario@máquina: /directorio_remoto/* /directorio_local/

Con la orden anterior copiaríamos el contenido del directorio /directorio_remoto/ al directorio /directorio_local/, que es el que se debe encontrar en nuestra máquina. Con el parámetro -r copiamos la carpeta y todas las subcarpetas que se encuentren dentro de ella.

  • scp -r usuario@máquina: /directorio_remoto/* /directorio_local/

Si lo que queremos es copiar una carpeta que se encuentre en nuestra máquina al servidor SSH, tendríamos que seguir la siguiente sintaxis:

  • scp /directorio_local/* usuario@máquina:/directorio_remoto

Con esta orden estaremos copiando el contenido del directorio directorio_local, que se encuentra en nuestra máquina, al directorio llamado directorio_remoto que se encuentra en el servidor.

¿Cómo podemos evitar que nos pida la contraseña cada vez que nos conectemos al servidor?

Para ello debemos generar en primer lugar la clave pública. En el terminal escribimos:

  • ssh-keygen -t rsa

Cuando nos pregunte por la palabra clave la omitimos pulsando dos veces enter.A continuación copiamos la clave pública al servidor con el comando ssh-copy-id:

  • ssh-copy-id nombre_usuario@máquina

Ahora sólo queda arrancar el agente SSH para que recuerde la contraseña.

  • ssh-add

Debemos tener en cuenta que si cerramos la consola y la abrimos de nuevo para conectarnos al servidor SSH, éste nos volverá a pedir contraseña. Para evitar esto podemos añadir el agente al inicio de sesión para que se ejecute al iniciar Ubuntu (Sistema/Preferencias/Sesiones).

 

Modificar el mensaje de bienvenida

Para modificar el mensaje de bienvenida simplemente debemos editar el archivo /var/run/motd y escribir en él lo que queramos que aparezca cuando alguien se conecte a nuestro servidor.

Conectar a un servidor SSH con Nautilus

Podemos crear una acceso directo a una carpeta del servidor SSH. Para ello tendremos que pinchar en “Lugares”, en el menú principal, y después en “Conectar con el servidor”.

En tipo de servicio escogemos SSH. En Servidor escribimos la IP o nombre del servidor. En puerto escribimos el número de puerto que utilizamos para conectarnos al servidor (por defecto el 22). En carpeta el nombre del directorio al que vamos a acceder en el servidor. En nombre de usuario el usuario con el que nos vamos a conectar al servidor. Por último  en “Nombre de la conexión” escribimos un nombre para identificar la conexión. Cuando hayamos especificado todos los valores pinchamos en “Conectar” y aparecerá el nombre de la conexión en “Lugares”, en el menú principal de Ubuntu.

También podemos acceder con Nautilus a una carpeta del servidor. A la hora de copiar ficheros desde o hacia el servidor siempre es más amigable utilizar el navegador de ficheros que copiar los ficheros a través de la consola. Abrimos Nautilus y en la barra de direcciones escribimos ssh://nombre_usuario@ip_servidor. Esto en el caso de que usemos el puerto por defecto. Si usamos otro, por ejemplo el 4440, escribiríamos ssh://nombre_usuario@ip_servidor:4440.

Cuando conectemos con el servidor nos pedirá la contraseña de la cuenta.

ssh_nautilus1.png

Una vez introducida podremos movernos por el sistema de ficheros de la máquina remota.

ssh_nautilus2.png

¿Cómo conectar desde Windows con un servidor SSH funcionando en Ubuntu?

Para conectarnos en Windows a un equipo con Ubuntu y con un servidor SSH podemos utilizar un cliente como Putty. Se puede descargar de la siguiente dirección.

Para copiar ficheros o directorios desde una máquina Windows a otra con Ubuntu se puede utilizar el programa Winscp.

¿Cómo conectar desde Ubuntu con un servidor SSH funcionando en Windows?

Para ello debemos instalar un servidor SSH en Windows. FreeSSH Server es una buena opción y además es gratuito. En este post comento como instalar este servidor en Windows.

Fuentes:

Popularity: 4% [?]


Otras entradas que te pueden interesar



Esta entrada tiene

18 comentarios

Escrito por Alejandro Meroño Hernández

Marzo 31st, 2007 at 10:26 am

18 comentarios en 'Administración remota con SSH'

Suscríbete a comentarios con RSS o TrackBack en 'Administración remota con SSH'.

  1. […] También podremos administrar aquellos servicios que tengamos instalados. Por ejemplo, podremos administrar desde el navegador nuestro servidor SSH (consulta el siguiente enlace si deseas saber cómo instalar y configurar un servidor SSH: administración remota con SSH) […]

  2. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  3. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  4. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  5. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  6. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  7. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  8. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  9. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  10. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  11. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  12. Gracias

    Muy completo y claro!!!!

    numeric

    3 Sep 09 at 9:52 pm

  13. AlejandroX, mil gracias por la información que has suministrado en tu website, es el mas conciso, y bien explicado de todos los site sobre este tema de SSH que he visitado.
    Ha sido muy útil.

    Juan C. Gutierrez

    2 Oct 09 at 4:35 am

  14. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  15. […] Para realizar la sincronización entre carpetas de diferentes equipos he utilizado rsync, una aplicación que permite respaldar archivos y directorios, y SSH, un protocolo que permite iniciar sesiones en máquinas remotas y del que hablé en el siguiente post: Administración remota con SSH […]

  16. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

  17. […] 89) OpenSSH: conjunto de aplicaciones que permiten realizar comunicaciones cifradas e iniciar sesiones en máquinas remotas usando el protocolo SSH. Manual. […]

Deja un comentario