Ubuntu安装Samba(阿里云服务器、samba端口映射)Win10可访问

发布时间 2023-09-26 18:28:08作者: Tame-complexity

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共享目录)

image-20230926131935322

4、在Windows下访问samba服务器

方式一:Win +R 输入

\\ + ip

方式二:

image-20230926125819318

方式三:

image-20230926125901118

\\ip\Volumes Volumes为smb.conf中配置的共享名。

image-20230926130117156

后面输入刚才设置的用户名和密码就可以了。

本地虚拟机安装的Samba到这就已经可以正常使用了。

5、阿里云需要配置smb端口映射

阿里云服务器:部分运营商判断端口25、135、139、444、445、5800、5900等为高危端口,并默认屏蔽。即使您添加的安全组规则放行了这些端口,在受限地区仍无法访问。建议您修改为其它非高危端口承载业务。

说白了就是你防火墙放行了这些端口,也无法通过该端口进行访问。

5.1 查看samba服务使用的端口

netstat -tlnp |grep smb

image-20230926130740350

显示当前使用的是默认的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

image-20230926131114805

5.2 重启 Samba 服务

service smbd restart
#查看状态
service smbd status

5.3 再次检查samba使用的端口

netstat -tlnp |grep smb

image-20230926130740350

服务器的防火墙放行端口

image-20230926133312444

这时在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

image-20230926131727066

现在就可以使用\\127.0.0.1访问服务器的Smb了

image-20230926132142897

image-20230926134240895