使用samba在win10上访问linux服务器文件(存在端口映射)


前言

出发点:由于计算机视觉相关模型都是在远程服务器上训练以及推理,大量可视化结果需要观察比较。
为了避免先将图片传输到本地,于是准备利用samba将远程linux服务器上的文件进行共享,在本地win上可以像打开本地文件一样浏览。

实际情况:由于远程服务器不在局域网内,需要通过端口映射进行访问。


一、Linux端(Centos)

1.1 安装samba服务

yum install -y samba

1.2 配置samba

1.2.1 修改配置文件

vim /etc/samba/smb.conf


[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

        smb ports = 33666   重点!端口设置为本地可访问到服务器的端口

[share]     设置共享文件夹  
        comment = my sharedata   说明
        path = /share            重点!分享的文件夹
        browseable = yes         下面为开启一些权限
        writable = yes
        read only = no
        guest ok = no
        available = yes

文件内容如下:
在这里插入图片描述

1.2.2 创建共享文件夹

创建文件夹
mkdir -p /share/test
开启权限
chmod -R 777 /share

1.2.3 配置samba用户

创建用户名为samshare的用户
useradd samshare
为该用户设置密码
smbpasswd -a samshare
【注意】创建samba用户应该使用已存在的用户,系统用户和samba用户名可以一样,但密码可以设置成不一样

若设置的用户名不在系统用户中,如下方式添加至系统用户
groupadd samshare -g 6000
useradd samshare -u 6000 -g 6000 -s /sbin/nologin -d /dev/null
上述方法添加的用户无法使用账号密码直接登录系统而已,并不是说这个账号就无法使用系统资源

1.2.4 关闭防火墙

关闭防火墙:
systemctl stop firewalld.service
关闭开机启动:
systemctl disable firewalld.service

确保setlinux关闭(临时)
setenforce 0
or 彻底禁用
在 /etc/sysconfig/selinux 或者 /etc/grub.conf 中添加
selinux=0

1.2.5 重启服务

service smb restart

查看端口使用情况
netstat -tunpl | grep smb
在这里插入图片描述
服务已经转发到设置的端口

二、Windows端(Win10)

2.1 配置端口映射

【重点】需要管理员身份运行cmd

netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=33666 connectaddress=服务器ip
其中33666 需要与之前的配置端口一致,服务器ip需要自己修改

查看端口映射情况

netsh interface portproxy show all
在这里插入图片描述

2.2 控制面板开启samba功能

控制面板–程序–启用或关闭Windows功能–勾选SMB客户端
在这里插入图片描述

2.3 重启win10完成配置

三、使用samba访问远程服务器

使用文件资源管理器[我的电脑]
访问127.0.0.1
输入配置的账号密码
在这里插入图片描述
在这里插入图片描述

四、遇到的问题

4.1 win配置完成导致无法访问网页

这个问题应该是ip冲突导致的
控制面板–网络和Internet–Internet选项–局域网设置–取消勾选代理服务器
在这里插入图片描述

4.2 能够访问远程服务器,但是里面的文件夹提示没有权限

解决方案①:samba配置文件中共享的文件夹的权限是否开启

chmod -R 777 [需要共享的文件夹]

解决方案②:samba配置的用户对于需要共享的文件夹是没有权限的
例子: /root/share 中的share权限虽然开了777 但是对于配置的samshare用户是没权限的
所以可以共享 /share 这个文件夹,这个对于samshare用户是有权限的,前提可是需要开启777权限的。
参考https://blog.youkuaiyun.com/hm315/article/details/126910907


### 配置 Linux 服务器实现公网访问 #### 设置 IP 转发功能 为了使内网中的 Linux 主机能够被外网访问,需确保系统的 IP 转发已启用。可以通过命令 `sysctl -a | grep 'net.ipv4.ip_forward'` 来查看当前状态;当返回值为1时表示已经开启了转发功能[^2]。 #### 修改防火墙规则 对于基于 Red Hat 的发行版来说,编辑 `/etc/sysconfig/iptables` 文件来调整防火墙策略是一个常见做法。完成更改之后应当重启 iptables 服务以应用新的配置:`service iptables restart` 或者使用 systemctl 工具 `systemctl restart iptables`[^4]。 #### 使用 NAT 技术映射端口 在外网设备上设置静态路由指向到具有公共 IP 地址的路由器或网关,并在此处做端口转发(Port Forwarding),将特定的服务端口号(比如 SSH 默认使用的22号端口)定向至目标内部网络地址上的相应计算机。这通常是在家庭宽带调制解调器或是企业级防火墙上操作完成。 #### 开启必要的服务并开放对应端口 假设要提供 Jupyter Notebook 访问,则除了要在云服务商控制台的安全组里打开8888端口之外,还需确认本地防火墙也允许该端口通信。如果防火墙正在运行的话,同样需要把此端口加入白名单列表中[^5]。 #### 创建SSH隧道或者利用反向代理 另一种方法是建立一条从外部机器通往私有LAN内的加密通道——即所谓的SSH Tunnel(ssh -R/-L选项), 这样即使没有固定的公网IP也可以间接达成目的; 又或者是借助像 Nginx这样的Web Server作为中介来进行流量分发, 它能隐藏真实的后端位置而仅暴露统一入口给互联网用户. ```bash # 启用IP转发临时生效 echo "1" > /proc/sys/net/ipv4/ip_forward # 持久化保存上述改动 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p # 添加iptables SNAT规则以便于NAT环境下的上网需求 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 建立SSH隧道实例 (假设远端监听的是localhost:8888) ssh -L 8888:localhost:8888 -N ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值