[SOLUCIONADO] SSHFS - Montando directorios remotos con Bash - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Linux (https://gambas-es.org/forum-9.html) +--- Foro: Programación en otros lenguajes (https://gambas-es.org/forum-12.html) +---- Foro: Bash (https://gambas-es.org/forum-13.html) +---- Tema: [SOLUCIONADO] SSHFS - Montando directorios remotos con Bash (/thread-607.html) |
SSHFS - Montando directorios remotos con Bash - tincho - 15-09-2021 Hola amigos. En el marco del proyecto intriga en el que estoy buscando algunas informaciones encontré un script que me parece muy interesante así que aquí, sin mas, se los comparto. https://whattheserver.com/keep-your-sshfs-mounts-mounted/ Para automatizar la conexiones con el protocolo SSHFS Código: #!/bin/bash Saludos. RE: SSHFS - Montando directorios reomotos con Bash - Shordi - 15-09-2021 Sshfs es usado por intriga de manera muy activa. Según departamento, sede y usuario se comparten carpetas al conectar a la VPN y se montan como unidades según los permisos de cada usuario. Es una herramienta muy útil, sí señor. RE: SSHFS - Montando directorios reomotos con Bash - tincho - 15-09-2021 (15-09-2021, 22:47)Shordi escribió: Sshfs es usado por intriga de manera muy activa. ¿Pero como haces la creación y copia de id_rsa.pub? ¿usuario por usuario? a mano? automático? ¿Donde definís los permisos de cada usuario? ¿Un mismo usuario puede iniciar la sesión en cualquier ordenador? Saludos. RE: SSHFS - Montando directorios reomotos con Bash - Shordi - 16-09-2021 Cita:¿Pero como haces la creación y copia de id_rsa.pub? ¿usuario por usuario? a mano? automático?No se utiliza así. No hay id_rsa.pub que transmitir en cada conexión. Lo que haces es crear confianza entre la máquina y el servidor con un usuario estándar en el servidor con ssh-copy-id y a partir de ahí no hay que teclear claves para sshfs en esa máquina. El truco, como creo que ya mencioné en algún lugar respecto a las BBDD es que no es necesario crear un usuario en el servidor por cada operación, tanto de acceso a las BBDD como a las carpetas compartidas. Basta con un usuario con permisos en la BBDD y otro con accesos en el servidor, dejando el tema de limitar los accesos a gambas. La clave del usuario de las BBDD está compilada con los programas, por lo que no está al alcance de los usuarios de la máquina (a no ser que sean hackers que te descompilen el código... pero ese escenario no se contempla). El usuario del servidor que comparte las carpetas, tiene limitado el acceso a eso, a las carpetas compartidas nada más (recuerdo haber investigado el tema de las jaulas de root para ssh en su día, pero no recuerdo si lo llegué a impelementar)... y nadie te dice que no puedas tener más de un "usuario compartidor", digamos uno para carpetas Globales y otro para las carpetas por sector. Los permisos se almacenan y asignan a cada usuario desde la base de datos de Intriga. Un usuario no es que pueda es que "debe" iniciar sesión en cada máquina de la empresa (me dolía la boca de echar broncas cada vez que pillaba a uno en el ordenador de otro usando un usuario que no era el suyo). Todas tienen establecida la confianza con el "usuario compartidor" del servidor. Al conectar con tu propio usuario se crean las carpetas para montar tus unidades. Cuando te desconectas se desmontan las unidades remotas y no recuerdo si se borraban las carpetas de montaje vacías o se dejaban ahí sin más. Te adjunto un extracto del código que hace esto. Se ejecuta en el programa que hace la conexión con la VPN (el CCP). En él puedes ver cómo el servidor de VPN 10.8.0.1 es diferente del que comparte las carpetas y cómo el usuario que comparte se llama "administrador". Código: If fMain.Permisos.Exist("UD") Then 'Tiene permiso para acceder a las unidades remotas RE: SSHFS - Montando directorios reomotos con Bash - tincho - 16-09-2021 Creo que hay un error, porque usas GLO y GLOB Código: fMain.Permisos.Exist("UD") Feedback Te recomiendo que uses la clase Config que hicimos con Tercoide, es mas fiable y esta todo en un solo lugar, ademas que permitiría hacer una versión CLI de Intriga, es decir sin entorno gráfico, usando la misma configuración. Te aconsejo que separes todo lo que puedas las cosas porque luego cuando trabajemos en grupo sobre gitlab es mas ordenado. Por ejemplo, todo lo de la configuración va en la clase config y accedes a ella desde el formulario principal o de cualquier otro formulario, es mas se pueden agaragar formularios que hagan otras cosas en el futuro que tu no previste. Otra cosa, haz un esquema del flujo del programa asi nos lo pasas. El programa "Dia" es ideal para eso pero también vale un papel y lo escaneas. De esta manera podemos discutir aspectos estructurales antes de codificar lo que evitara hacer varias veces las cosas. Saludos. RE: SSHFS - Montando directorios reomotos con Bash - Shordi - 16-09-2021 Cita:Creo que hay un error, porque usas GLO y GLOB en realidad no uso ninguno de los dos. He modificado en el código toda referencia a la estructura de mi empresa de correprisas para subirla ahí.. Cita:Te recomiendo que uses la clase Config que hicimos con Tercoide, es mas fiable y esta todo en un solo lugar, las configuraciones salen de una base de datos Mysql y nunca he tenido problemas con ellas. El código que crea el settings desde una tabla parámetros con los campos "programa","variable" y "valor"es éste: Código: .Exec("select * from parametros where programa=&1", Application.Name) Toda modificación posterior se hace vía un formulario que no opera con literales. Cita:ademas que permitiría hacer una versión CLI de Intriga, es decir sin entorno gráfico, usando la misma configuración. No entiendo esto para qué sirve. Cita:Te aconsejo que separes todo lo que puedas las cosas porque luego cuando trabajemos en grupo sobre gitlab es mas ordenado. Eso ya lo hace settings. Por lo que vi en su momento Config es lo mismo pero en XML y admitiendo campos vacíos... y no le veo mucha ventaja. Lo miraré más despacio a ver si lo pillo. Cita:, es mas se pueden agregar formularios que hagan otras cosas en el futuro que tu no previste eso también está previsto vía base de datos Cita:Otra cosa, haz un esquema del flujo del programa asi nos lo pasas. El programa "Dia" es ideal para eso pero también vale un papel y lo escaneas. Ya quisiera yo, pero de momento estoy espulgando el código para quitar todo lo relativo a mi empresa (ya digo que primero hice los programas y luego hice Intriga para controlar los usuarios y los propios programas), son unas 14.000 lineas de código y hay muchas cosas que son propias sólo de la circunstancia en la que se creó. Por lo que no sé todavía cómo va a quedar la estructura global del programa. Sí puedo hacer esquemas parciales sobre lo que voy agregando, creo (bajaré ese Dia a ver qué tal). Lo que sí voy a abrir es una serie de preguntas en el hilo de "Dudas" sobre cosas que no sé si quitar o no. Gracias por el feedback Saludos RE: SSHFS - Montando directorios reomotos con Bash - tincho - 16-09-2021 (16-09-2021, 10:19)Shordi escribió: No se utiliza así. No hay id_rsa.pub que transmitir en cada conexión. Lo que haces es crear confianza entre la máquina y el servidor con un usuario estándar en el servidor con ssh-copy-id y a partir de ahí no hay que teclear claves para sshfs en esa máquina. Escenario
Saludos. RE: SSHFS - Montando directorios reomotos con Bash - Shordi - 16-09-2021 Exacto. ese se es el concepto: Escenario: Empresa con varios sectores (finanzas, personal, etc.) y varias sedes que tienen, claro, personal de cada sector en cada una de ellas. (este escenario es idéntico, por ejemplo para un desarrollador independiente que tiene clientes pequeños. Ahí la empresa es él mismo y cada sector se convierte en un cliente distinto. En este caso luego hay que limitar las zonas comunes en la compartición de carpetas vía permisos.) -Todas las máquinas deben estar dadas de alta y configuradas: openvpn, ssh, sshfs, ifconfig, vino, colector, etc. y la confianza con el servidor ssh establecida. (El programa de configuración de estación de trabajo no está hecho. Como eso no era tan frecuente, no tuve nunca tiempo de estandarizarlo y lo hacía a pedal cada vez que compraba una) En el servidor de bbdd reside la información de cada máquina y usuario. En el servidor de ficheros hay carpetas : -globales, para todos los usuarios, -sectoriales, es decir para todos los de un sector -globales por sede, para todos lo de una sede -sectoriales por sede -personales por cada usuario. Todo esto es independiente de la máquina. La máquina, por su parte, tiene un estado de activa, o no activa y por supuesto registrada en el sistema o no. Conexión: Se conecta a la vpn con el fichero de configuración ovpn estándar. Se comprueba si la máquina es correcta, si no, se aborta. Se comprueba la clave tecleada por el usuario, si no se aborta Se comprueba que la clave es correcta y no ha caducado. Si no, se aborta. Se cargan en memoria los derechos, permisos y propiedades del usuario. Se conecta a la vpn con el fichero de configuración del usuario Se crean en los menús del CCP (trayicon) las entradas de menú correspondiente a las aplicaciones globales (testeador de mail, testeador de notas internas y los programas a los que tenga derecho (Finanzas, almacen, etc.). Se crean, si es que no existen, las carpetas donde han de ser montadas las unidades remotas y se montan las unidades remotas a las que tenga derecho (globales, sectoriales, según sede a la que pertenezca (aunque no esté ubicado en ella) y la personal. Se deja constancia en los logs de la conexión realizada. (usuario, ippública, hora, etc. etc.) Si su clave está próxima a caducar se le avisa para que la cambie. Si así está establecido, se revisa la instalación de los programas de envío de datos y alarmas de hardware para que la máquina siga manteniendo su estatus en la BD Así: El número de estaciones de trabajo es ilimitado, El número de usuarios es ilimitado, El número de sectores es ilimitado, El número de sedes es ilimitado, El tipo de permisos es ilimitado y todo usuario puede usar cualquier máquina con su usuario y clave, claro, y todo queda soportado en la base de datos vía programas ccp, intriga y alguno más. Es lioso de contar... pero te haces una idea. Saludos RE: SSHFS - Montando directorios reomotos con Bash - tincho - 16-09-2021 (16-09-2021, 21:36)Shordi escribió: (El programa de configuración de estación de trabajo no está hecho. Como eso no era tan frecuente, no tuve nunca tiempo de estandarizarlo y lo hacía a pedal cada vez que compraba una) Yo empece a hacer algo de eso, es para que corra en terminal y en gambas, luego te lo paso (16-09-2021, 21:36)Shordi escribió: En el servidor de bbdd reside la información de cada máquina y usuario. Si el que administra las pc es un solo informático ¿Por que una base de datos alojada en un servidor de bases de datos? en el escenario "Emprendedor autónomo" con un archivo JSON alcanza y sobra o con una Sqlite sobra para registrar parametros de la pc, se comprime y guarda una copia en un periodo de tiempo establecido. Me animo a decir que para otros escenarios tampoco es necesaria una base de datos con motor, al lo sumo una sqlite. Siempre hablando de la lista de PC y usuarios. (16-09-2021, 21:36)Shordi escribió: Conexión: ¿Acá te referís a que el usuario ingresa la clave para entrar al sistema Linux en la pc? si es así en donde ingresa la clave exactamente? ¿Se aborta que cosa exactamente? (16-09-2021, 21:36)Shordi escribió: todo queda soportado en la base de datos vía programas ccp, intriga y alguno más. ¿Que es un programa CCP? Saludos. RE: SSHFS - Montando directorios reomotos con Bash - Shordi - 17-09-2021 Cita:Si el que administra las pc es un solo informático ¿Por que una base de datos alojada en un servidor de bases de datos? en el escenario "Emprendedor autónomo" con un archivo JSON alcanza y sobra o con una Sqlite sobra para registrar parametros de la pc, se comprime y guarda una copia en un periodo de tiempo establecido.No, no, no. La base de datos es irrenunciable. JSON es un formato de intercambio, un XML para vagos . No es una herramienta seria para el procesamiento de datos. Sqlite es una "base de datos de escritorio" apropiada para cosas locales, de hecho intriga utiliza una base Sqlite para su utilidad de notas de escritorio, pero tiene un límite inmenso: te ata a la máquina donde resida. Intriga puede ser solución para el Emprendedor autónomo... pero ¿por qué no ha de instalarse dicho emprendedor una base de datos en su máquina? Es algo que se hace en minuto y medio y puestos a ello y ,¿Por qué atarse a una máquina? Si has de desplazarte a las ubicaciones de los clientes... ¿llevas todo en un portátil? ¿y se se cae o te lo roban? Todo paso más allá de "soy aficionado y me divierto trasteando con mis programitas" pasa por una base de datos, o propia o contratada. ¿Es que no piensas tener una web? ¿Qué web no trabaja contra una Base de datos? Pues ahí la tienes. Por último: según el nivel de control que se ejerza sobre las máquinas de los usuarios, pueden llegar a manejarse grandes masas de información. Piensa que controlarás cada sesión de usuario, cada consulta, modificación y creación de datos, cada conexión y desconexión, etc. En mi empresa llegué a manejar tablas de casi un millón de registros... y no veo a sqlite manejando tal volumen de datos y mucho menos a JSON. Cita:¿Acá te referís a que el usuario ingresa la clave para entrar al sistema Linux en la pc? si es así en donde ingresa la clave exactamente? ¿Se aborta que cosa exactamente?No. Me refiero a cuando el usuario se conecta a la VPN y teclea su usuario y contraseña en ella. Hice en su momento una versión en la que se coordinaba el usuario del pc con la vpn... pero eso limitaba el uso del sistema en máquinas distintas a la tuya propia. Cita:¿Que es un programa CCP?Es el nombre que le puse al programa que te conecta a la vpn y valida y configura los accesos y las comunicaciones dentro del sistema. Es el Control Central de Procesos... el programa malvado de Tron, la película de los 80 Saludos |