这个需求来自于腾讯云之类的运营商将445 139之类的端口封禁,samba不能使用455端口
网上的解决办法是几乎都是进行端口转发将445端口的进出都转发到其他端口
我自己想出了一种新的办法,就是有点慢,但是不需要去对到本地计算机的445端口进行转发,将影响缩小到samba软件本身。
我是先在虚拟机装linux系统,我用的是centos7
1、在腾讯云的服务器中samma的配置文件配置为
[global]
workgroup = WORKGROUP
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
smb ports = 4455 //这个是将samba的默认端口改成4455
[web]
workgroup = samba
netbios name = smb //这里是登录的用户名称
path = /var/www //目录
browseable = yes
writeable = yes
2、添加smb用户
[root@base samba]# groupadd samba [root@base samba]# useradd smb -g samba [root@base samba]# smbpasswd -a smb New SMB password: Retype new SMB password: Added user ted.
//这是上面配置文件中的用户
启动Samba服务,设置开机启动
[root@base samba]# systemctl start smb [root@base samba]# systemctl enable smb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. [root@base samba]#
开放端口
[root@base samba]# firewall-cmd --permanent --add-port=139/tcp success [root@base samba]# firewall-cmd --permanent --add-port=445/tcp success
[root@base samba]# systemctl restart firewalld
[root@base samba]#
或者直接把防火墙关了也行。
3、在本地虚拟机中安装
yum -y install cifs-utils
然后创建一个目录mkdir /mnt/www
然后将腾讯云上的samba的共享文件夹挂载到这个文件夹中
mount -t cifs -o port="4455",username="smb",password="123456" //10.0.0.51/web /mnt/www
上面参数说明
port="4455" //是指定用4455端口连接
username="smb" //就上上面添加的smb用户
password="123456" //smb用户密码
//10.0.0.51/web //云服务器的ip和上面配置文件中给共享目录起的名字
/mnt/www 虚拟机中挂载的位置
4、在本地虚拟机中的samba的配置文件这种样子写
[global]
workgroup = SAMBA
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[cloudtencent]
workgroup = samba
netbios name = smb1
path = /mnt/www
browseable = yes
writeable = yes
上面的smb1是本地虚拟机中sam的用户,/mnt/www就是刚才挂载云服务器上的共享目录的文件夹
5、最后在windows上添加映射网络驱动器
到此完成!