贡献者: 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
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