¿Cómo comparto una carpeta con otra máquina Linux en la misma red doméstica?

44

Estoy tratando de compartir una carpeta en una máquina Ubuntu con otra máquina Ubuntu en la misma red doméstica. Cuando hago clic derecho en la carpeta y elijo Opciones de uso compartido, me dice que necesito instalar los servicios de uso compartido de red de Windows para poder compartir carpetas. ¿Qué tiene que ver Windows con esto? No estoy tratando de compartir con una máquina Windows ...

EmmyS
fuente

Respuestas:

22

¿Qué tiene que ver Windows con esto? No estoy tratando de compartir con una máquina Windows ...

Tienes razón, esto puede ser confuso. Entonces, déjenme tratar de aclarar los términos en primer lugar:

La forma en que Windows comparte archivos e impresoras se llama SMB . La gente del proyecto SAMBA ha implementado todos los protocolos y especificaciones de Microsoft para Linux. Ubuntu, por lo tanto, admite el mismo tipo de intercambio de archivos que Windows, que se llama Samba.

  • Puede usar SAMBA para compartir archivos entre máquinas Linux. De hecho, puede preferirlo en caso de que, por ejemplo, tenga un amigo con su computadora con Windows.

  • Alternativamente, puede usar la forma Linux de compartir archivos, que es NFS (Sistema de archivos de red). Esta respuesta a una pregunta anterior explica cómo hacerlo. (pero es bastante técnico)

Entonces, cuando el cuadro de diálogo Opciones para compartir le pide que instale los paquetes, en realidad no está instalando ningún software de Microsoft ni nada de eso. Anímate y hazlo, es perfectamente seguro.

Apéndice:

Puede intentar habilitar el intercambio antes de seguir las instrucciones de Salih Emin; Si no funciona, recibirá una advertencia simple, luego puede seguir los pasos que Salih describe si es necesario. Lo he probado en un sistema recién instalado y actualizado, y de hecho necesitaba hacerlo.

Stefano Palazzo
fuente
1
Gracias por la explicación. Es curioso que esté tratando de alejarme de Microsoft, y resulta que incluso Linux usa partes de su trabajo. Ugh
EmmyS
44
Bueno, la gente de samba ha implementado los protocolos de Microsoft mucho mejor que los propios Microsoft. Un poco de consuelo allí :-)
Stefano Palazzo
8

En la actualidad, hay un pequeño error en Lucid que aparece en Launchpad: error # 536766 . Este error no solicita al usuario que instale los paquetes necesarios para completar la configuración de uso compartido de archivos. Hasta que se aborde eso, aquí hay una solución rápida.

Necesita instalar libapache2-mod-dnssd y reiniciar. Haga clic en este enlace para instalarlo o busque libapache2-mod-dnssd en el Centro de software.

Una vez que lo tenga instalado, diríjase a Sistema → Preferencias → Compartir archivos personales , y marque la casilla 'Compartir archivos públicos en la red'.

texto alternativo

Una vez hecho todo esto, debería poder ver todas las otras computadoras en su red que han permitido compartir archivos públicos dentro de la carpeta Pública. Simplemente haga clic en Lugares → Red , y allí debería ver todas las computadoras disponibles y sus carpetas públicas compartidas.

Al hacer doble clic en el icono del servidor, se montará la carpeta pública relevante en su escritorio.

Vía texto de enlace

Salih Emin
fuente
¿Están esos paquetes asociados con el servidor web apache? Ya tengo instalado Apache como parte de una pila LAMP y no quiero romperlo.
EmmyS
1
gran descubrimiento! (He editado la respuesta por cierto, este paquete instalará apache2.2-bin como una dependencia, parecía más fácil de esta manera)
Stefano Palazzo
1
@ EmmyS, los paquetes no interrumpirán su instalación de apache. Estoy ejecutando esos y más sin problemas.
RolandiXor
Este enlace me pareció útil para compartir un directorio: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas
5

Simplemente puede ejecutar un servidor simple HTTP en la máquina Linux y acceder al mismo en la otra máquina.

Pasos:

  1. primero inicie el terminal desde la carpeta que se compartirá.
  2. correr en la terminal python -m SimpleHTTPServer
  3. comprueba tu ip usando ifconfig.
  4. ingrese en el navegador de la otra máquina la dirección IP: 8000 (por ejemplo: si su IP es 127.3.4.123, en el navegador escriba 127.3.4.123:8000)

Obtiene los archivos necesarios en la carpeta para descargar.

John
fuente
44
Descargar! = Compartir.
EmmyS
Para mí es una gran respuesta, aunque para Python3 espython3 -m http.server
VanDavv
2

Creo que en eso se enumeran los paquetes de SAMBA, o es al menos parte de su descripción. Como alternativa, puede probar Preferencias-> Compartir archivos, que creo que utiliza un mecanismo diferente. Sin embargo, Samba es una cosa útil para instalar.

Nerdfest
fuente
Tenía la impresión (erróneamente, aparentemente) de que Samba permitía compartir entre Linux y Windows. No quiero compartir con Windows, solo con otra máquina Linux.
EmmyS
No, tenías razón. Ambas máquinas tienen que tener samba instalada, por supuesto.
Stefano Palazzo
Ambas máquinas necesitan usar el protocolo SMB. Windows hace esto de una manera. Las máquinas Linux lo hacen con samba.
erizo demente
2

Puede instalar "qweborf". Compartirá el directorio a través de HTTP y los otros hosts podrán acceder con un navegador.

También puede habilitar webdav y permitir que el directorio se monte como un sistema de archivos de lectura / escritura (probado con davfs2, KDE, Gnome2, OsX).

LtWorf
fuente
2

Si desea una integración perfecta en Ubuntu, y no está interesado en la compatibilidad con Windows, SSH es su arándano.

Consulte ¿Cómo puedo compartir archivos entre dos máquinas Linux a través de LAN?

Es posible que deba instalar el servidor SSH con:

sudo apt-get install openssh-server

Desde la aplicación de administrador de archivos en su cliente, puede acceder a su servidor con:

sftp://servername.local

Para acceder a archivos desde una terminal o mediante programación, use sshfspara crear un punto de montaje en el sistema de archivos del cliente.

sin bar
fuente
Otras formas programáticas de copiar archivos a través de SSH incluyen scp, y (aún mejor) rsync.
nobar
2

Para las redes solo para Linux, encuentro que SSHFS es nativo, estable y extremadamente rápido. Tengo dos máquinas Xubuntu (18.04) compartiendo / carpetas de inicio sobre SSH.

Aquí se explica cómo configurar esto sshfs y reconectarse automáticamente después de reiniciar usando fstab sin tener que proporcionar una contraseña. Un gran agradecimiento al usuario de serverfault kubanczyk por cómo volver a conectarse después de una suspensión / reanudación remota.

Usaré "Máquina local - surfbox" para la computadora desde la que se está conectando, y "Máquina remota - devbox" para la computadora a la que se está conectando.

Reemplace "usuario remoto" a continuación con el nombre de usuario con el que inicia sesión en la máquina Remota, y "localizador" con el nombre de usuario con el que inicia sesión en la máquina Local. Para verificar los nombres de usuario, escriba echo $USERterminal en máquinas remotas y locales.

Además, verifique su ID de usuario o ID de grupo, ambos deben ser 1000.

GroupID: id -g localuser UserID:id -u localuser

1. Obtenga direcciones IP de sus máquinas locales y remotas.

hostname -I

Usaré 192.168.1.150 para la máquina local ('surfbox') y 192.168.1.151 para la máquina remota ('devbox')

2. Instalar paquetes en máquinas locales y remotas

sudo apt install sshfs fuse ssh

3. Cree un fusible de grupo y agréguele localizador

Crea un grupo: sudo groupadd fuse

Agregar localizador al grupo: sudo usermod -a -G fuse $user

4. Habilite "allow_other" en la configuración del fusible

Necesitaremos esta opción al montar en fstab

Edite /etc/fuse.confcon su editor de línea de comando. Elimine el hashtag antes user_allow_othery guárdelo.

5. Generar claves SSH en la máquina local

No proporcione una contraseña cuando se le solicite . Simplemente presione Entrar para dejar en blanco.

ssh-keygen -t rsa -C [email protected]

Las claves se almacenan en la carpeta /.ssh del directorio de inicio de la máquina local.

6. Transfiera la clave SSH pública de su máquina local a la máquina remota

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Se le solicitará una contraseña para el usuario remoto en la máquina remota. La clave pública de la máquina local ahora se agrega al archivo ~ / .ssh / optional_keys en la máquina remota.

7. Cree un directorio en la carpeta Máquina local / mnt donde montará la máquina remota / carpeta de inicio.

Elija cualquier nombre que tenga sentido para su máquina remota.

sudo mkdir /mnt/devboxhome

8. Monte la máquina remota / directorio de inicio desde la terminal

La sintaxis para sshfs es

sshfs [user@]host:[directory] mountpoint [options]

usamos

sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa

ejemplo: suponiendo que "steve" es el nombre de usuario en máquinas locales y remotas

sudo sshfs [email protected]:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

Como ha transferido la clave RSA pública a la máquina remota, no se le solicitará la contraseña del usuario remoto.

Recibirá una advertencia de que la máquina no es confiable y se le preguntará si debe agregarse. Agregue la máquina remota como confiable.

9. Verificar: Examinar la máquina remota / directorio de inicio

En la terminal de la máquina local, ahora puede enumerar la máquina remota / directorio de inicio en / mnt / devboxhome

cd /mnt/devboxhome ls

o use Nautilus para explorar el directorio. Excelente.

10. Habilite la reconexión después de reiniciar

Agregaremos una entrada en / etc / fstab para que esto suceda. Necesitará su ID de usuario de máquina local o groupid; consulte la introducción si se lo perdió. Edite / etc / fstab con su editor de línea de comando y agregue estas dos líneas al final de / etc / fstab

# Mount devbox at boot [email protected]:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

  • delay_connect hace que el kernel espere hasta que la red esté activa hasta que intente montar el directorio en la máquina Remota.
  • Como nos estamos ejecutando como root durante el arranque, tenemos que especificar el archivo de claves que se almacena en el directorio de inicio del localizador.
  • allow_other : los usuarios que no sean el que realiza el montaje real pueden acceder al sistema de archivos montado.
  • idmap = user - solo traduce el UID del usuario conectado
  • reconecte, ServersLiveInterval, ServerAliveCountMax - ssh envía pings de mantenimiento de vida. Si ServerAliveCountMaxfallan los pings consecutivos, vuelva a conectar.

Un usuario que inicie sesión como Steve en máquinas locales y remotas tendría:

[email protected]:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

IMPORTANTE : una barra diagonal después del directorio remoto: [email protected]: / home / steve /

guardar / etc / fstab y ...

11. Reiniciar

Ahora debería poder acceder a la máquina remota / directorio de inicio en la máquina local / mnt / devboxhome En Nautilus puede arrastrar esta carpeta a la barra de Lugares

12. Repita

Siga los mismos pasos nuevamente en la máquina remota para compartir el directorio / home de la máquina local.

zx81roadkill
fuente
Buena respuesta. No sabía que se podían montar sistemas de archivos sshfs en fstab, gracias por eso.
Mármol orgánico
0

Mi forma de compartir archivos:

sudo npm install -g http-server

Vaya a la carpeta que desea compartir, abra la terminal y ejecute este comando:

http-server -o 

Podrá acceder a esa carpeta en todas las máquinas de la misma red en la dirección IP mencionada por la salida de ese comando.

rehman_00001
fuente
0

zx81roadkill es correcto, use "sshfs". Samba es una mierda, NFS es basura. Sshfs es completamente utilizable desde mi computadora aquí en California hasta una computadora en Argentina. Es completamente seguro, es tan rápido como cualquier otra cosa (tengo una línea de gibabit).

Sshfs es relativamente nuevo en comparación con Samba y NFS, pero es muy superior a cualquiera de ellos. Aquí hay un ejemplo de cómo ejecutarlo (suponiendo que tenga todos los paquetes instalados)

# mount "username"'s home directory on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine: /tmp/my_mount
# mount the root directory on "machine" (note: if "username" on "machine"
# can't write to the file, neither will you.  You have "username"'s privs
  mkdir -p /tmp/my_mount ; sshfs username@machine:/ /tmp/my_mount
# mount the directory "Videos" on "username"'s account on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine:Videos /tmp/my_mount

Una vez que ingrese la contraseña, / tmp / my_mount contendrá todos los archivos de "nombre de usuario" en "máquina". No te molestes en jugar con Samba o NFS. Son solo un dolor inútil en el trasero para configurar o configurar.

Para desmontar:

fusermount -u /tmp/my_mount

y si eso falla (por cualquier razón):

umount -f /tmp/my_mount

Todos los datos enviados a través del punto de montaje están encriptados. Por qué esta no es la forma estándar, totalmente aceptada, de hacer un montaje en una máquina remota es un misterio para mí. Es muy superior a cualquier otro método en términos de simplicidad.

Si necesita velocidad bruta, tal vez esa parte hinchada de basura Samba lo haga, o NFS. No sé, 100 MB / s + es lo suficientemente bueno para mí.

Jiminy Idiot
fuente