Ubuntu安装Samba(阿里云服务器、samba端口映射)Win10可访问
1、安装 Samba 服务
sudo apt-get install samba #安装 Samba 服务器
sudo apt-get install smbclient #安装 Samba 客户端
查看samba版本
samba -V
2、配置需要共享的目录
# 新建目录,用于共享
mkdir /usr/local/volumes
# 更改权限信息
sudo chown nobody:nogroup /usr/local/volumes
# 给所有用户添加读写权限
sudo chmod 777 /usr/local/volumes
2、添加 Samba 用户
添加 Samba 用户,用于在访问共享目录时使用。这里添加的用户在 Linux 中必须存在。
sudo smbpasswd -a Crayon #Crayon是用户名
#附添加用户
useradd -m 用户名
passwd 用户名
3、配置samba服务器
vim /etc/samba/smb.conf
跳到文件末尾(命令模式按G),加入配置信息。
[Volumes] #映射的共享名称
comment = Volumes #描述信息
path = /usr/local/volumes #共享文件夹路径
browseable = yes #该共享是否可以浏览
writable = yes #是否有写权限
available = yes #该共享资源是否可用
valid users = Crayon #允许访问该共享的用户,多个用户或者组中间用逗号隔开
3、重启 Samba 服务、放行端口
sudo service smbd restart
查看服务状态
sudo service smbd status
Ubuntu要放行端口或关闭防火墙。
ufw status #查看防火墙状态:inactive是关闭,active是开启。
ufw enable #开启防火墙。
ufw disable #关闭防火墙。
ufw allow 139 #开放22端口,放行端口后需要重启防火墙
ufw reload #重启ufw防火墙
在控制面板-程序功能-启用或关闭windows功能开启客户端,关闭服务器(否则可能通过127.0.0.1访问到的是本地的samba共享目录)
4、在Windows下访问samba服务器
方式一:Win +R 输入
\\ + ip
方式二:
方式三:
\\ip\Volumes
Volumes为smb.conf中配置的共享名。
后面输入刚才设置的用户名和密码就可以了。
本地虚拟机安装的Samba到这就已经可以正常使用了。
5、阿里云需要配置smb端口映射
阿里云服务器:部分运营商判断端口25、135、139、444、445、5800、5900等为高危端口,并默认屏蔽。即使您添加的安全组规则放行了这些端口,在受限地区仍无法访问。建议您修改为其它非高危端口承载业务。
说白了就是你防火墙放行了这些端口,也无法通过该端口进行访问。
5.1 查看samba服务使用的端口
netstat -tlnp |grep smb
显示当前使用的是默认的139和445(win10通过ip访问时似乎都是默认走445)
Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)
在windows客户端telnet一下看是否是端口问题:
telnet SERVER_IP 139 #SERVER_IP:阿里云服务器公网IP
telnet SERVER_IP 445
telnet不通,说明是端口被禁用,需要自定义一个新的端口号
vim /etc/samba/smb.conf
在samba配置文件的[global]
中添加
smb ports = 1399
5.2 重启 Samba 服务
service smbd restart
#查看状态
service smbd status
5.3 再次检查samba使用的端口
netstat -tlnp |grep smb
服务器的防火墙放行端口
这时在windows下telnet是可以telnet通的
telnet SERVER_IP 1399
5.4 映射该服务器的1399端口到本地455端口
由于windows访问远程文件夹时使用默认455端口,无法指定自定义端口,因此还需要在win端通过“映射该服务器的1399端口到本地455端口”的方式实现访问
netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=1399 connectaddress=SERVER_IP #SERVER_IP写自己服务器IP
删除端口转发命令:
netsh interface portproxy delete v4tov4 listenaddress=<Listen Address> listenport=<Listen Port>
#<Listen Address>要删除的规则的监听地址,<Listen Port>要删除的规则的监听端口。
添加后可检查映射列表是否已存在
netsh interface portproxy show all
现在就可以使用\\127.0.0.1访问服务器的Smb了