Fuente utilizada: begnu.wordpress.com
He creado un pequeño sistema casero para montar carpetas en mi netbook pertenecientes a mi PC de sobremesa, pero a través de ssh (la gente suele gastar Samba). Como me ha costado mi tiempo... os comparto las acciones que he realizado.
Primer paso, instalar el servicio de sshd
Para utilizar la solución que propongo es muy importante que la máquina "servidor" tenga el servicio de ssh instalado. Distribuciones como Ubuntu incluyen sólo instalada la versión cliente, pero no el demonio. Para instalar el servicio:
sudo apt-get install ssh
Segundo: conexiones ssh sin contraseña
Aunque parezca una contradicción utilizar ssh sin contraseña es mucho más seguro, puesto que obligamos a que se haga uso de comprobaciones de firmas digitales. Esto implica que desde cada máquina cliente (el que será vuestro terminal "ligero") se deberá generar su fichero de firma digital:
ssh-keygen -t rsa
Este comando os pedirá que pongáis una frase... pero no escribáis nada. Limitaros a pulsar intro en cada pregunta que haga. Una vez generada la firma, la copiaremos a nuestro servidor de ssh:
ssh-copy-id -i ~/.ssh/id_rsa.pub seb@192.168.4.39
Donde seb sería el usuario y 192.168.4.39 la ip del servidor. Si nuestra distribución no tiene el comando ssh-copy-id, habrá que copiar la firma manualmente:
scp ~/.ssh/id_rsa.pub seb@192.168.4.39:tmpssh seb@192.168.4.39cat tmp >> .ssh/authorized_keys
La prueba de fuego se realizará desde la máquina cliente, y es comprobar que no se nos pide password al realizar una conexión ssh:
ssh seb@192.168.4.39
Ok, perfecto, ya podemos conectarnos sin contraseña. Ahora configuraremos el sshd para que NADIE más pueda conectarse. Para ello editaremos la configuracion sshd del servidor:
sudo nano /etc/ssh/sshd_config
Y buscamos las siguintes variables para aplicarles los siguientes valores:
PasswordAuthentication noRSAAuthentication yesPubkeyAuthentication yes
Y por último resetearemos el servicio para aplicar los cambios:
sudo /etc/init.d/ssh restart(Si no existe ssh, prueba con sshd).
Paso tres: "La nube"
Par montar una carpeta por ssh deberemos tener instalado el siguiente paquete:
sudo apt-get install sshfs
Y su funcionamiento es muy sencillo:
sshfs usuario@ip_servidor:carpeta_origen/ mi_carpeta/
Por si os es útil, os facilito el código de dos scripts que he creado. El primero sirve para automatizar el montado de mis carpetas, y el segundo lógicamente es para desmontarlas. Veréis que en vez de usar ip's hago uso de "servidor_interno" y "servidor_externo". Esos dos nombres los defino en mi /etc/hosts con la ip de mi servidor en la red local y la que tiene en el exterior (por si me conecto por internet). También veréis que hago varios mv, esto es por que la carpeta donde tenéis que montar el sshfs debe de estar vacía.
El esquema del primer script es el siguiente:
- ¿El sshf está ya montado? -> Entonces aborto el script.
- Mover los contenidos de las carpetas afectadas, para poder montar en ellas.
- Montar carpetas con ip de red interna.
- Si falla, montar las carpetas con ip de red externa.
- Si vuelve a fallar, volvemos a poner los contenidos en las carpetas afectadas.
nube.sh
#!/bin/bash#Verificacion de sistema montadoif [ $(echo $(df -h | grep Movies | wc -l)) -eq 1 ]thenecho "El sistema ya está montado"exit 1fi#Moviendo contenidos localesmkdir ~/.copia_local 1> /dev/null 2> /dev/nullcd ~/.copia_localmkdir Movies Pictures Music Downloads Documents 1> /dev/null 2> /dev/nullcd - 1>/dev/null 2>/dev/nullmv ~/Vídeos/* ~/.copia_local/Movies/ 1> /dev/null 2> /dev/nullmv ~/Música/* ~/.copia_local/Music/ 1> /dev/null 2> /dev/nullmv ~/Descargas/* ~/.copia_local/Downloads/ 1> /dev/null 2> /dev/nullmv ~/Imágenes/* ~/.copia_local/Pictures/ 1> /dev/null 2> /dev/nullmv ~/Documentos/* ~/.copia_local/Documents/ 1> /dev/null 2> /dev/null#Montando las carpetas remotassshfs moncho@server_interno:Sebas/Movies/ /home/sebas/Vídeos/if [ $? -eq 1 ]thenecho "Falla red local"echo "Probando IP externa"sshfs moncho@server_externo:Sebas/Movies/ ~/Vídeos/if [ $? -eq 1 ]then#Restaurando contenidos localescd ~/.copia_localmv Movies/* ~/Vídeos/ 1> /dev/null 2> /dev/nullmv Music/* ~/Música/ 1> /dev/null 2> /dev/nullmv Downloads/* ~/Downloads/ 1> /dev/null 2> /dev/nullmv Pictures/* ~/Imágenes/ 1> /dev/null 2> /dev/nullmv Documents/ ~/Documentos/ 1> /dev/null 2> /dev/nullcd - 1>/dev/null 2>/dev/nullecho "Conexion fallida"exit 1elsesshfs moncho@server_externo:Sebas/Music/ ~/Música/sshfs moncho@server_externo:Sebas/Downloads/ ~/Descargas/sshfs moncho@server_externo:Sebas/Pictures/ ~/Imágenes/sshfs moncho@server_externo:Sebas/Documents/ ~/Documentos/fielsesshfs moncho@server_interno:Sebas/Music/ ~/Música/sshfs moncho@server_interno:Sebas/Downloads/ ~/Descargas/sshfs moncho@server_interno:Sebas/Pictures/ ~/Imágenes/sshfs moncho@server_interno:Sebas/Documents/ ~/Documentos/fiecho "Conectado a la nube"exit 0
Y para desmontar he hecho el siguiente script:
desnubar.sh
#!/bin/bashif [ $(echo $(df -h | grep Movies | wc -l)) -eq 0 ]thenecho "El sistema ya está desmontado"exit 1fi#Desmontandosudo umount ~/Vídeosif [ $? -eq 1 ]thenecho "Abortando el desnubamiento"echo "Debe insertar bien el password"exit 1fisudo umount ~/Músicasudo umount ~/Imágenessudo umount ~/Documentossudo umount ~/Descargas#Moviendo contenidos localescd ~/.copia_localmv Movies/* ~/Vídeos/ 1> /dev/null 2> /dev/nullmv Music/* ~/Música/ 1> /dev/null 2> /dev/nullmv Downloads/* ~/Downloads/ 1> /dev/null 2> /dev/nullmv Pictures/* ~/Imágenes/ 1> /dev/null 2> /dev/nullmv Documents/* ~/Documentos/ 1> /dev/null 2> /dev/nullcd - 1>/dev/null 2>/dev/nullexit 0
Un saludo :)
2 comentarios:
Muy interesante :)
Gracias :)
Publicar un comentario
Si te ha gustado la entrada o consideras que algún dato es erróneo o símplemente deseas dar algún consejo, no dudes en dejar un comentario. Todo feedback es bienvenido siempre que sea respetuoso. También puedes contactarme por estas redes sociales https://linktr.ee/hamster_ruso si lo consideras necesario.