Para configurar SSH para la transferencia de archivos de un Servidor a un Cliente o en sentido contrario, debemos de seguir los siguientes pasos, también hablaremos de las diferentes formas de Login frente a un Servidor SSH y como crear un Túnel el cual es lo mismo que un reenviador de Puertos con SSH. Primero debemos de Instalar el SSH, en este documento trabajaremos con OpenSSH, y utilizaremos el siguiente comando para la instalación:
# apt-get install ssh
Después de la instalación podemos entrar a configurar el archivo del demonio con las necesidades que tengamos para nuestro Servidor, el archivo se encuentra en la ruta /etc/ssh/ y tiene el nombre de sshd_config, algunos parámetros que podemos configurar para el SSH dentro de este archivo son:
# nano /etc/ssh/sshd_config
Port 22
Este es el puerto por el cual va a escuchar nuestro Servidor lo podemos cambiar.
Protocol 2
Este será la Versión con la cual vamos a trabajar, en este caso con la Versión 2.
LoginGraceTime 120
Este será el tiempo que tendrá el Usuario para el Login frente al Servidor, este tiempo es en segundo.
PermitRootLogin no
Este parámetro es para permitir que las conexiones se puedan realizar como Root.
MaxStartups 2
Esta línea es para indicar cuantas conexiones vamos a permitir simultáneamente en el Servidor.
MaxAuthTries 2
Esta será para el máximo de intentos de Login frente al Servidor.
PassworAuthentication yes
Aquí le diremos al Servidor si queremos trabajar con Autenticación con Login.
ListenAddress 192.168.1.1
Aquí le estamos indicando que solo escuche peticiones por la interfaz con esta IP.
X11Forwarding yes
Esta línea es para indicarle al Servidor si vamos a permitir aplicaciones graficas por medio de la consola SSH.
DenyUsers root@192.168.1.67
Con esta linea podemos denegar la conexión de dicho usuario a a dicho equipo de la red, en este caso el PC con la IP 192.168.1.67 y con el Usuario Root.
NOTA: Después de toda configuración en el Archivo sshd_config debemos de reiniciar el Servidor para que tome los cambios, lo haremos con el siguiente comando (# /etc/init.d/ssh restart).
Conectarnos Por SSH
Por medio de la Consola
Para conectarnos por medio de SSH a otro equipo (Recordemos que es un Modelo Cliente – Servidor), lo que debemos de hacer es lo siguiente:
# ssh Usuario@DireccionIP
Ejemplo:
# ssh bluder@192.168.1.67
NOTA: La primera vez que nos conectemos desde un Cliente al Servidor el nos preguntara si estamos seguros de continuar con la conexión (SI/NO), le diremos que SI. Después el nos pedirá la contraseña del Usuario con el cual estamos accediendo al Servidor, el cual puede ser un Usuario local o el mismo Root del Servidor SSH, así:
Smith:/# ssh bluder@192.168.1.67
The authenticity of host '192.168.1.67 (192.168.1.67)' can't be established.
RSA key fingerprint is ae:d0:a5:ff:3e:85:da:0d:b5:69:d3:21:c0:32:8d:6d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.67' (RSA) to the list of known hosts.
bluder@192.168.1.67's password:
Linux Debian 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
bluder@Debian:~$
Si hemos cambiado el Puerto del Servidor el comando para conectarnos de al Servidor será el siguiente:
# ssh –p Puerto Usuario@DireccionIP
Ejemplo:
# ssh –p 2233 bluder@192.168.1.67
Si queremos salir de una conexión SSH, solo debemos de digitar en la consola el comando Exit, así:
bluder@Debian:~$ exit
logout
Connection to 192.168.1.67 closed.
Smith:/home/pepe#
Por modo Grafico
Para esta conexión debemos de teclear con la ayuda del teclado Alt + F2 el cual nos abrirá una pequeña ventana que se llama Ejecutar una Aplicación, en la cual debemos de ingresar las siguientes líneas (En este ejemplo nos conectaremos desde el Servidor a un Usuario pepe localmente, es decir nos conectaremos a nosotros mismos con el Usuario Pepe, localmente):
ssh://Usuario@DireccionIP
Ejemplo:
ssh://pepe@192.168.1.67
NOTA: Si es la primera vez de la conexión él nos preguntara si queremos continuar, por que desconoce la computadora remota, le daremos clic en Iniciar Sesión de Todos Modos. Después el nos pedirá la contraseña de ese Usuario (Es probable que tengamos que ingresar la contraseña 2 veces), así:
Indicamos el Usuario y la Dirección IP de la Maquina Remota:
Confirmamos que quermos iniciar sesión:
Daremos la contraseña del Usuario:
Y ya podemos ver la carpetas y directorios de la Maquina Remota:
Igualmente si le cambiamos el puerto a nuestro Servidor SSH lo que debemos de hacer es agregarle el puerto de la siguiente forma:
ssh://Usuario@DireccionIP:Puerto
Ejemplo:
ssh://pepe@192.168.1.67:2233
Copiar Archivos por SSH
Ahora si lo que queremos es copiar archivos del un equipo a otro, utilizaremos el siguiente comando:
# scp RutadelArchivoaCopiar Usuario@DireccionIPdelDestinatario:RutadelDestinatario
Ejemplo:
# scp /home/pepe/Desktop/ejemplo.odt bluder@192.168.1.67:/home/bluder/
En este ejemplo lo que estamos haciendo es copiando un archivo desde el Cliente, el cual se llama ejemplo.odt que se encuentra en la maquina Cliente, copiaremos el archivo al Servidor el cual tiene la IP 192.168.1.67 y un Usuario con el nombre de Bluder, este Usuario es local del Servidor y por ultimo indicamos en que directorio quedara el archivo (Al final del directorio del destinatario podemos indicar otro nombre para el archivo que queremos copiar si queremos que quede con un nombre diferente al original).
NOTA: Si es la primera vez que copiamos archivos, nos preguntara si estamos seguros de continuar con la conexión (SI/NO), después debemos ingresar la contraseña del Usuario de la maquina local, en este caso Bluder, así:
Smith:/$ scp /home/pepe/Desktop/ejemplo.odt bluder@192.168.1.67:/home/bluder/
The authenticity of host '192.168.1.67 (192.168.1.67)' can't be established.
RSA key fingerprint is ae:d0:a5:ff:3e:85:da:0d:b5:69:d3:21:c0:32:8d:6d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.67' (RSA) to the list of known hosts.
bluder@192.168.1.67's password:
ejemplo.odt 100% 24 0.0KB/s 00:00
Si es el caso que cambiamos el puerto del SSH, lo que debemos de hacer para copiar archivos por medio de SSH es añadir al comando la opción –P y el puerto (La –P en Mayúscula), así:
# scp –P Puerto RutadelArchivoaCopiar Usuario@DireccionIPDestinatario:RutadelDestinatario
Es el mismo comando pero le debemos de indicar el puerto por el cual está escuchando al SSH.
Ejecutar Aplicaciones Web por medio de SSH
En este paso ejecutaremos como ejemplo la aplicación en debían Gimp, para creación y edición de imágenes, en este paso el Servidor SSH tiene la aplicación instalada pero el Cliente no, por lo cual lo vamos a ejecutar con el siguiente comando:
# ssh –X Usuario@Direccionip AplicacionGrafica
Ejemplo:
# ssh –X bluder@192.168.1.67 gimp
Después de este comando nos cargara la aplicación que necesitamos tomar del Servidor, si el puerto del Servidor SSH lo cambiamos, debemos de ejecutar el siguiente comando:
# ssh –X –p 2233 Usuario@Direccionip AplicacionGrafica
Ejemplo:
# ssh -X -p 2233 bluder@192.168.1.65 gimp
En nuestro ejecutamos el comando normal y nos debe de aparecer la aplicación, en este caso Gimp y nos cargara como lo muestra la imagen:
Esta es la bienvenida que nos da la Aplicación (Gimp):
Después nos podemos dar cuenta de que podemos utilizar la Aplicación como si estuviéramos en el Servidor:
Cambiar el Mensaje de Bienvenida de SSH
Si nos hemos dado cuenta el mensaje que nos da el SSH es el siguiente:
Linux Debian 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Si queremos cambiar este mensaje, debemos de entrar a editar el archivo motd en la ruta /var/run/, con la ayuda del siguiente comando:
# nano /var/run/motd
Y colocar el mensaje que más nos parezca adecuado, guardamos el archivo y listo, así:
Recordemos que debemos de reiniciar el Servidor SSH para que los cambios se apliquen (# /etc/init.d/ssh restart).
Autenticación con SSH
Autenticación con Clave Pública
Como ya sabemos la autenticación hasta este momento ha sido con un password, el cual pertenece al Usuario local del Servidor SSH, lo que haremos en este momento será autenticarnos por medio de Llaves Asimétricas, las cuales crearemos por medio de SSH. Para generar el par de llaves utilizaremos el siguiente comando, podeos generar dos tipos de llaves RSA o DSA, así:
# ssh-keygen –t rsa
ó
# ssh-keygen –t dsa
Después de este comando el nos preguntara donde queremos guardar nuestro par de llaves, el nos da un directorio por defecto, en el cual le daremos Enter para decirle que aceptamos este directorio, después nos pedirá un password para este par de llaves, se lo podemos dar y a la hora de conectarnos al Servidor SSH solo nosotros sabremos el Password de la llave, o le daremos Enter para dejarlo así sin Password, así:
SI queremos ver el Fingerprint de nuestras llaves, ejecutaremos el siguiente comando (Esta lo hacemos para verifiar que estamos agregando la llave correcta):
# ssh-keygen -l -f Rutadelallave
Ejemplo:
# ssh-keygen -l -f /home/pepe/.ssh/id_rsa.pub
La salida debe de ser como esta:
2048 56:b3:40:9a:c5:76:2d:93:05:09:ec:4f:c3:08:a4:db id_rsa.pub (RSA)
Después de esto debemos de entregarle la llave Pública al Servidor SSH, lo haremos con la ayuda de los comandos anteriores, así:
# scp RutadelallavePublica Usuario@DireccionIP:RutadellavesdelServidor
Ejemplo:
# scp /home/pepe/.ssh/id_rsa.pub bluder@192.168.1.67:/home/bluder/id_rsa_pepe.pub
En este comando el nos pedirá la contraseña que colocamos a nuestro par de llaves y después la contraseña del Usuario Bluder, después de copiar la llave pública al Servidor debemos de entrar a editar el archivo de configuración del demonio en el Servidor SSH con la ayuda del siguiente comando:
# nano /etc/ssh/sshd_config
Buscaremos la línea AuthorizedKeysFile y la des comentaremos, al final de esta línea encontramos una ruta y un archivo de configuración (%h/.ssh/authorized_keys), el cual debemos de crearlo en esa ruta (Podemos cambiar la ruta o el nombre del archivo), recordemos con que Usuario estamos trabajando, en este archivo se encontraran las llaves publicas de los Clientes que se autenticaran contra el Servidor SSH, guardaremos los cambios y saldremos del editor.
Después debemos de re direccionar la llave pública del Cliente al archivo que creamos el cual contendrá la llave, para ello ejecutaremos el siguiente comando:
# cat RutadelaLlave > /home/pepe/.ssh/authorized_keys
Ejemplo:
# cat /root/llaves/id_rsa.pub > /home/pepe/.ssh/authorized_keys
NOTA: Si tenemos más de una llave para agregar al archivo para la autenticación, lo que debemos de hacer es utilizar el mismo comando pero con doble signo >> para la redirección, de lo contrario nos borrara la llave que tengamos y nos dejara solo la ultima llave agregada.
Después de esto debemos de reiniciar el servidor SSH y nos debe de funcionar la Autenticación con Clave Publica (# /etc/init.d/ssh restart).
Para la conexión por medio de Claves Públicas debemos de utilizar el siguiente comando:
# ssh Usuario@DireccionIP
Ejemplo:
# ssh bluder@192.168.1.67
Este es el mismo comando para la conexión de SSH, pero el Servidor no nos debe de pedir la clave del Usuario pepe sino la clave que le asignamos a nuestra llave y si no le dimos ninguna debemos de entrar en limpio, porque la autenticación se hará con nuestro par de llaves (La Privada que tenemos nosotros y la Publica que tiene el Servidor).
En nuestro caso ingresamos desde el Cliente vía SSH y seguimos los pasos anteriores, después nos salimos del Servidor e ingresamos con la ayuda del par de llaves públicas, así:
Si estamos trabajando con un puerto diferente para el SSH, el comando debe de ser el siguiente:
# ssh –p Puerto Usuario@DireccionIP
Ejemplo:
# ssh –p 2233 bluder@192.168.1.67
Un problema que nos puede aparecer a la hora de la autenticación es que el Cliente no encuentra su propia llave Publica, esto se da porque de pronto el nombre de la llave cambio o tenemos varias llave en el mismo equipo, lo que debemos de hacer en este caso es decirle con que llave queremos trabajar, el comando debe de ser así:
# ssh –i RutadelaLlavePrivada Usuario@DiereccionIP
Ejemplo:
# ssh –i /home/pepe/id_rsa_pepe bluder@192.168.1.67
En este ejemplo la llave tenía otro nombre y lo debemos de especificar por que el SSH toma por defecto solo id_rsa ó id_dsa, si estamos trabajando con otra llave sería lo mismo, en este comando debemos de colocar el -i que significa identificación. Si el puerto del Servidor SSH es otro debemos de indicarlo con el siguiente comando:
# ssh –p Puerto –i RutadelaLlavePrivada Usuario@DiereccionIP
Ejemplo:
# ssh –p 2233 –i /home/pepe/id_rsa_pepe bluder@192.168.1.67
Autenticación basada en Listas de Acceso con Autenticación de Cliente
En este paso de autenticación lo que haremos es autenticación por Clientes, es decir, la autenticación solo se le permitirá a los Usuario que indiquemos dentro del archivo de configuración del demonio SSH, para ello debemos de entrar a editar el archivo de configuración con la ayuda del siguiente comando, así:
# nano /etc/ssh/sshd_config
Dentro del archivo de configuración debemos de agregar la siguiente línea, en la cual le diremos el nombre del usuario con el cual se podrán conectar los Clientes y la dirección IP del Equipo de donde se podrán conectar, debe de ser así:
AllowUsers Usuario@DireccionIP
Ejemplo:
AllowUsers bluder@192.168.1.65
Esta línea nos dice que solo se podrá Autenticar el Usuario pepe (Que es un Usuario local del Servidor SSH) desde el equipo con la dirección IP 192.168.1.80. Recordemos que también se puede autenticar el Usuario Root si no hemos cambiado el parámetro en el archivo de configuración. Debemos de reiniciar el demonio SSH para que los cambios se actualicen en el Servidor.
Conexión de un Túnel VNC
Lo que debemos de hacer para una conexión por medio de un túnel SSH con VNC (Aplicación de Escritorio Remoto), con el cual queremos que la información que viaje de extremo a extremo sea lo más seguro posible, para ello debemos de tener instalado el VNC en el Servidor SSH y en el Cliente y listo, para crear el túnel debemos de utilizar el siguiente comando:
# ssh –L PuertoLocal:MaquinaRemota:PuertoRemoto Usaurio@DireccionIP
Ejemplo:
# ssh –L 5959:127.0.0.1:5900 bluder@192.168.1.67
En este comando le estamos diciendo que cree el túnel (-L), que tome el Puerto 5959 en la maquina local (Cliente), que tome la IP 127.0.0.1 (Que será la IP del Servidor, pero como lo indicaremos más adelante le podemos decir el Loopback y no revelaremos la IP del Servidor, aunque la podemos indicar) , el numero del Puerto real del VNC en el Server que es el 5900 (Si no lo hemos cambiado) y por último el Usuario para la conexión (bluder) y la Dirección IP del Servidor (192.168.1.67).
Después de la conexión y de la Autenticación que puede ser por cualquiera de las anteriores (En este caso tenemos la autenticación por llaves publicas), desde el Cliente entraremos al VNC e iniciaremos la Conexión por medio del túnel indicando la Dirección IP del Servidor (127.0.0.1) y el Puerto que escogimos para la comunicación (5959) y listo iniciara la comunicación por medio del túnel, es un poco más lento pero está viajando por SSH.
NOTA: El Servidor VNC debe de estar configurado como lo desee el Administrador, en el caso de nosotros el Cliente no necesita verificación y no puede manejar nuestro equipo.
Recordemos que si le cambiamos el puerto al Servidor SSH, se lo debemos de indicar dentro del comando, de la siguiente forma:
# ssh –L –p Puerto PuertoLocal:MaquinaRemota:PuertoRemoto Usaurio@DireccionIP
Ejemplo:
# ssh –L –p 2233 5959:127.0.0.1:5900 bluder@192.168.1.67
3 comentarios:
Bluder sos un fenomeno... Estoy migrando una empresa grafica a linux y esto es lo que necesito para trabajar en el servidor desde casa. ¿Que sabes de openmosix?
Ayuda, instale ssh en debian y ubuntu pero debian si puede conectarse con ubuntu pero ni ubuntu ni cualquier otra maquina puede conectarse con debian, el puerto 22 esta abierto , hay algo que seguro no deja pasar ssh de ubuntu a debian me podrias ayudar???
Well done :-D