如何与同一家庭网络上的另一台 Linux 机器共享文件夹?

Emm*_*myS 54 samba networking

我正在尝试与同一家庭网络上的另一台 Ubuntu 机器共享一台 Ubuntu 机器上的文件夹。当我右键单击文件夹并选择共享选项时,它告诉我我需要安装 Windows 网络共享服务才能共享文件夹。Windows 与此有什么关系?我不是要与 Windows 机器共享...

Ste*_*zzo 31

Windows 与此有什么关系?我不是要与 Windows 机器共享...

你是对的,这可能会令人困惑。因此,让我首先尝试澄清这些术语:

Windows 共享文件和打印机的方式称为SMB。从人民SAMBA项目已经实现了微软所有的协议和规范的Linux版本。因此,Ubuntu 支持与 Windows 相同类型的文件共享,称为 Samba。

  • 您可以使用 SAMBA 在 Linux 机器之间共享文件。事实上,您可能更喜欢它,例如,如果您有朋友使用他们的 Windows 计算机。

  • 或者,您可以使用共享文件的 Linux 方式,即 NFS(网络文件系统) -上一个问题的答案解释了如何执行此操作。(但它相当技术性)

因此,当“共享选项”对话框要求您安装软件包时,您实际上并未安装任何 Microsoft 软件或类似软件。去做吧,这是非常安全的。

附录:

您可以尝试在遵循 Salih Emin 的说明之前启用共享;如果它不起作用,您将收到一个简单的警告,然后您可以根据需要执行 Salih 描述的步骤。我已经在新安装的最新系统上尝试过它,我确实需要这样做。

  • 嗯,桑巴人比微软自己更好地实现了微软的协议。那里有一些安慰:-) (6认同)

zx8*_*ill 9

我发现 SSHFS 是原生的、稳定的并且非常快。我有两台 xubuntu 机器 (18.04) 共享 /home 文件夹和一个英特尔 NUC 作为“保管箱”USB 记忆棒。到处都是 sshfs。

2020 年 7 月 12 日更新:我找到了适用于 Windows 的 SSHFS。一个干净漂亮的 GUI,零配置,并使用来自 linux-machines 的 SSH 密钥。

以下是如何设置sshfs并在使用fstab重新启动后自动重新连接而无需提供密码。非常感谢serverfault 用户 kubanczyk在远程挂起/恢复后如何重新连接。

我将为您连接的计算机使用“本地机器 - surfbox”,为您要连接的计算机使用“远程机器 - devbox”。

检查您的用户 ID 和组 ID,它们都应该是 1000。

组 ID:id -g localuser 用户 ID:id -u localuser

1. 获取本地和远程机器的 IP 地址。

hostname -I
Run Code Online (Sandbox Code Playgroud)

我将 192.168.1.150 用于本地机器('surfbox')和 192.168.1.151 用于远程机器('devbox')

2. 在本地和远程机器上安装软件包

sudo apt install sshfs fuse ssh
Run Code Online (Sandbox Code Playgroud)

3.创建组熔断器并添加localuser

创建组: sudo groupadd fuse

将本地用户添加到组中: sudo usermod -a -G fuse $user

4.在保险丝配置中启用“allow_other”

在 fstab 中挂载时我们将需要此选项

编辑/etc/fuse.conf您的命令行编辑器。删除之前的主题标签user_allow_other并保存。

5.在本地机器上生成SSH密钥

出现提示时不要提供密码。只需按 Enter 即可留空。

ssh-keygen -t rsa -C youremail@example.com

密钥存储在本地机器主目录 /.ssh 文件夹中

6. 将您的本地机器公共 SSH 密钥传输到远程机器

ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151

系统将提示您输入远程计算机上远程用户的密码。本地机器公钥现在添加到远程机器上的 ~/.ssh/authorized_keys 文件中。

7. 在本地机器 /mnt 文件夹上创建一个目录,您将在其中安装远程机器 /home 文件夹。

选择对您的远程机器有意义的任何名称。

sudo mkdir /mnt/devboxhome

8.从终端挂载远程机器/home目录

sshfs 的语法是

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

我们用

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

示例:假设“steve”是本地和远程机器上的用户名

sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

由于您已将公共 RSA 密钥传输到远程计算机,因此不应提示您输入远程用户密码。

您将收到一条警告,指出该机器不受信任,并提示您是否应添加该机器。将远程计算机添加为受信任。

9.验证:浏览远程机器/home目录

在本地机器上的终端中,您现在可以在 /mnt/devboxhome 下列出远程机器 /home 目录

cd /mnt/devboxhome ls

或使用 Nautilus 浏览目录。伟大的。

10.重启后启用重新连接

我们将在 /etc/fstab 中添加一个条目来实现这一点。您将需要您的本地机器用户 ID och groupid - 如果您错过了,请参阅介绍。使用命令行编辑器编辑 /etc/fstab 并将这两行添加到 /etc/fstab 的末尾

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

  • delay_connect使内核等待网络启动,直到它尝试在远程机器上挂载目录。
  • 由于我们在引导期间以 root 身份运行,因此必须指定存储在 localuser 主目录中的密钥文件。
  • allow_other - 进行实际挂载的用户以外的用户可以访问挂载的文件系统。
  • idmap=user - 只翻译连接用户的 UID
  • 重新连接、ServerAliveInterval、ServerAliveCountMax - ssh 发送保持活动的 ping。如果ServerAliveCountMax连续 ping 失败,请重新连接。

在本地和远程计算机上以 steve 身份登录的用户将具有:

steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,ServerAliveInterval=15,ServerAliveCountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

重要:远程目录后的斜杠:steve@192.168.1.151:/home/steve/

保存 /etc/fstab 和 ....

11. 重启

您现在应该可以访问本地机器 /mnt/devboxhome 中的远程机器 /home 目录 在 Nautilus 中,您可以将此文件夹拖到位置栏

12. 重复

在远程机器上再次执行相同的步骤,使本地机器的 /home 目录共享。


Sal*_*min 8

目前,Lucid 中存在一个小错误,在 Launchpad 中列出:错误 #536766。此错误不会提示用户安装完成文件共享设置所需的必要软件包。在解决这个问题之前,这里有一个快速的解决方法。

您需要安装libapache2-mod-dnssd并重新启动。单击此链接进行安装,或在软件中心找到libapache2-mod-dnssd

安装完成后,转到System ? 喜好 ?个人文件共享,然后选中“在网络上共享公共文件”框。

替代文字

全部完成后,您应该能够查看网络上允许在 Public 文件夹中共享公共文件的所有其他计算机。只需点击地点?Network,然后您应该会看到所有可用的计算机及其共享的公共文件夹。

双击服务器图标将在您的桌面上安装相关的公共文件夹。

通过链接文本


小智 7

您可以简单地在 linux 机器上运行一个 simpleHTTP 服务器并在另一台机器上访问它。

脚步 :

  1. 首先从要共享的文件夹启动终端。
  2. 在终端运行 - python -m SimpleHTTPServer
  3. 使用ifconfig.
  4. 在另一台机器的浏览器中输入ip地址:8000(例如:如果你的ip是127.3.4.123然后在浏览器中输入127.3.4.123:8000)

您可以在要下载的文件夹中获取所需的文件。

  • 下载!=分享。 (7认同)

nob*_*bar 6

如果您希望在 Ubuntu 中无缝集成,并且对 Windows 兼容性不感兴趣,那么 SSH 就是您的最佳选择。

请参阅如何通过 LAN 在两台 Linux 计算机之间共享文件?

您可能需要使用以下命令安装 SSH 服务器:

sudo apt-get install openssh-server
Run Code Online (Sandbox Code Playgroud)

从客户端上的文件管理器应用程序,您可以通过以下方式访问服务器:

sftp://servername.local
Run Code Online (Sandbox Code Playgroud)

要从终端或以编程方式访问文件,请使用sshfs在客户端的文件系统中创建安装点。