贡献者: addis
这里介绍两种不同的方法。
ssh 和 sftp 可以连接。注意如果使用 sudo sshfs 就要确保 sudo ssh 和 sudo sftp 可以链接,后者使用的配置文件在 /root/.ssh/ 而不是 ~/.ssh/
sshfs 会只传输文件需要的部分 sshfs
sshfs 在 WSL 下无效,好失望…希望 wsl 2(据说要 2020 年)可以
/mnt/ 目录下,例如 /mnt/101
sudo sshfs [-o allow_other] [-o follow_symlinks] [-o port=端口号] 用户名@ip地址:/目录 /挂载目录 注意 用户名@ 一定要有。另外 ip 不能改成 ssh 设置的别名
-o follow_symlinks 选项如果没有的话,使用绝对路径的 symlink 就会被当作是本地计算机上的路径。但如果使用该选项,远程的 symlink 在本地就会显示为真正的文件夹,不能只删掉 link 本身。
umount [dir],然后可以手动删掉路径
sudo sftp(注意有没有 sudo 区别很大)可以连接的话 sudo sshfs 就是可以的。如果不 mount 在 mnt 目录,不用 sudo 应该也是可以的。
sudo sshfs -o debug ... 来 debug
sshfs 命令先临时 mount 一次(否则会出错!),成功以后用 sudo vim /etc/fstab 在配置文件中最后一行加入 用户名@域名或ip:服务器目录 /mnt/挂载目录 fuse.sshfs x-systemd.automount,_netdev,follow_symlinks,identityfile=/home/用户/.ssh/id_rsa,allow_other,default_permissions,reconnect,rw,exec,umask=0022,x-gvfs-show,port=端口号 0 0(关于这些选项参考这里). 用 sudo mount 挂载文件夹 立即生效.
ssh 有某个权限,但是 sshfs 没有,那么可以在选项里面加上 rw,exec,umask=0000。保守一些也可以用 0022。
/etc/fstab 加入的一行删掉即可。如果成功的话,重启后进入 /mnt/folder 就会自动 mount
SMB 应该是最广泛使用的网络硬盘协议,对各种不同的操作系统兼容性较好,下文的 NFS 更多用于 linux。
sudo apt install samba(如果有冲突用把 apt 换成 aptitude)
/etc/samba/smb.conf,在最后加入:
[global]
# 支持 symlink 到任何地方
allow insecure wide links = yes
[共享名称]
comment = 一些备注
path = 共享文件夹的绝对路径
read only = no
browsable = yes
# 支持 symlink 到任何地方
wide links = yes
[shared]
comment = /mnt/data/shared/ on surface4
path = /mnt/data/shared/
read only = no
browsable = yes
writable = yes
wide links = yes
create mask = 0775
directory mask = 0775
force user = root
force group = root
sudo service smbd restart 或者 sudo systemctl status smbd.service 重启 samba
systemctl status smbd.service 查看状态。
/lib/systemd/system/smbd.service 里面的 [Service] 中添加 NotifyAccess=all,再重启服务即可。
sudo ufw allow samba 设置防火墙
sudo smbpasswd -a 用户名 创建用户名,设置密码
445,比较老的版本用 139。
smb://ip地址/共享名称 但重启或 logout 以后就会消失
sudo apt install cifs-utils -y。CIFS 是 SMB 协议的一种实现。
sudo vim /root/.SMBcredentials(应该也可以用其他路径)
username=smb用户名
password=smb密码
sudo chmod 600 /root/.SMBcredentials 只允许管理员读写。
sudo mount -t cifs -o rw,vers=3.0,credentials=/root/.SMBcredentials,port=端口号 //ip地址/共享名称 /mount文件夹。port=端口号 可以省略。共享名称 是一定要写的,否则提示格式错误。
共享名称,用 sudo apt-get install smbclient。然后 smbclient -L ip地址 -U 用户名 然后可能会提示输入密码,完了以后会列出所有共享名
/etc/fstab 加入一行://ip地址/共享名称 /mount文件夹 cifs vers=3.0,credentials=/root/.SMBcredentials,file_mode=0777,dir_mode=0777,nofail
fstab 以后,就可以用 sudo mount /mount文件夹 测试是否成功。
\\ip地址\共享名称。选 connect using different credential, 在 Windows 中,软链会显示为正常文件。也可以在文件浏览器中打开我的电脑,然后上面的选项中映射网络硬盘,可以选择开机自动连接。
\\ip地址@端口号\共享名称
smb://ip地址/共享名称 好像就行了。不知道重启会不会还在。
2049
sudo apt-get install nfs-kernel-server
mkdir 文件夹
sudo vim /etc/exports,添加一行 /home/用户名/文件夹 *(rw,sync,no_root_squash,no_subtree_check)
sync 变为 async,可以用 ram 作为文件缓存,但如果服务器断电缓存中的文件将丢失。
sudo systemctl restart nfs-kernel-server 或者 sudo service nfs-kernel-server restart
nfsstat –s 可以检查 nfs 的信息,包括 nfs 版本(v1 到 v4)等
sudo vim /etc/nfs.conf.d/interfaces.conf,内容为
[nfsd]
host=ip地址或hostname
然后重启服务 sudo systemctl restart nfs-kernel-server
文件夹 文件夹,然后 sudo apt-get install nfs-common
sudo mount -t nfs [host]:/home/用户名/文件夹 ~/文件夹。其中 [host] 是 ip 地址或者域名。
df -h 查看是否成功。
sudo vim /etc/fstab,添加一行 [host]:/home/用户名/文件夹 /home/用户名/文件夹 nfs
2049