七万号·数据平台实战手记

Back

明朗北街七万号·数研工坊|扎根雄安新区中关村科技园,专注受限环境下软件搭建与数据平台落地


适用场景#

如果你属于以下任一种情况,这篇对你有用:

  • 刚装好操作系统,需要远程管理服务器(第 1 篇的后续)
  • 内网环境多台服务器之间需要互相传文件
  • 部署中间件时发现端口连不上,排查半天发现是防火墙
  • 数据平台集群搭建前,需要先打通机器之间的网络

应用范围: 所有内网 Linux 服务器管理、文件传输、服务端口放行。这是搭建任何数据平台的前置技能——第 3 篇(镜像源)、第 6 篇(Docker)都会依赖它。


一、问题#

服务器装好了系统,但你不能整天坐在机房操作。你需要远程登录、传文件、开端口。但内网环境没有云控制台给你点按钮,一切都要命令行搞定。

而且内网环境有个特点:机器多、网络复杂、安全要求高。SSH 配置不好会连不上,防火墙开太大又过不了安全审计。

二、约束#

  • 无公网 IP,全部走内网 IP
  • 多台服务器之间需要互相访问
  • 数据平台组件需要开放大量端口
  • 安全要求:不能直接 systemctl stop firewalld 一关了事(有些环境过不了审)
  • 部分服务器无显示器,只能远程操作

三、SSH:远程管理的基石#

3.1 基本配置#

SSH 服务端默认端口 22。装完系统后先确认服务在跑:

systemctl status sshd
# 没装的话
yum install -y openssh-server
systemctl enable --now sshd
plaintext

客户端连接:

ssh root@192.168.1.100
plaintext

3.2 密钥登录:内网运维的正确姿势#

密码登录在内网环境有两大痛点:一是每次都要输密码,二是多台机器密码管理混乱。密钥登录是标准做法。

生成密钥对(在本地机器上):

ssh-keygen -t ed25519 -C "deploy@internal"
# 一路回车,会在 ~/.ssh/ 下生成 id_ed25519(私钥)和 id_ed25519.pub(公钥)
plaintext

复制公钥到目标服务器:

ssh-copy-id root@192.168.1.100
# 首次会要求输入密码,之后就可以免密登录
plaintext

验证:

ssh root@192.168.1.100
# 不再要求密码,直接登录成功
plaintext

禁用密码登录(安全加固):

编辑 /etc/ssh/sshd_config

PasswordAuthentication no
plaintext

然后重启 SSH:

systemctl restart sshd
plaintext

⚠️ 禁用密码登录前,务必确认密钥已经能正常登录。否则你会把自己锁在门外。

3.3 内网 SSH 的两个坑#

坑 1:连接特别慢

症状:输入 ssh 命令后要等 5-10 秒才提示输密码。 原因:DNS 反向解析超时。

解决:编辑 /etc/ssh/sshd_config,加一行:

UseDNS no
plaintext

坑 2:局域网内多台机器 IP 难记

在本地 ~/.ssh/config 里配置别名:

Host node1
    HostName 192.168.1.100
    User root
    Port 22

Host node2
    HostName 192.168.1.101
    User root
plaintext

之后直接 ssh node1 就行。

四、SCP:内网传文件#

scp 基于 SSH,无需额外配置,装好 SSH 就能用。

4.1 基本用法#

# 本地上传到服务器
scp ./app.tar.gz root@192.168.1.100:/opt/

# 服务器下载到本地
scp root@192.168.1.100:/opt/backup.sql ./

# 传目录加 -r
scp -r ./configs/ root@192.168.1.100:/etc/

# 指定端口
scp -P 22022 ./app.tar.gz root@192.168.1.100:/opt/
plaintext

4.2 大文件传输的坑#

坑:传大文件(几个 G 的 ISO、镜像包)断断续续

scp 不支持断点续传。传一半断了只能重来。解决方式:

方案 A:用 rsync(推荐)

rsync -avP ./big-file.iso root@192.168.1.100:/opt/
# -P = --partial + --progress,支持断点续传
plaintext

方案 B:分卷压缩再传

# 本地分卷
tar czf - ./data/ | split -b 2G - part-
# 传所有分卷
scp part-* root@192.168.1.100:/opt/
# 远端合并解压
cat part-* | tar xzf -
plaintext

4.3 内网传输加速技巧#

  • 内网带宽通常足够,瓶颈常在磁盘 IO。用 rsync -z 压缩传输能显著加速(针对文本类文件)
  • 多文件并行传输:rsync-P 后多开几个终端窗口分别传不同目录

五、防火墙:放行还是不开?#

5.1 先搞清楚你面对的是哪一套#

CentOS/RHEL 系 7+ 用 firewalld,6 及以下用 iptables。openEuler、KylinOS 默认都是 firewalld。先看:

systemctl status firewalld
plaintext

5.2 firewalld 基本操作#

# 查看当前放行规则
firewall-cmd --list-all

# 放行一个端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

# 放行一个服务(如果内置了)
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
plaintext

⚠️ 记得 --permanent 后一定要 --reload,否则重启后失效。

5.3 数据平台常见端口清单(速查)#

组件端口协议放行说明
SSH22TCP必须放行
MySQL3306TCP应用服务器 → 数据库
PostgreSQL5432TCP应用服务器 → 数据库
Redis6379TCP应用服务器 → 缓存
Kafka9092TCP生产者/消费者
Nginx80/443TCP对外服务
Flink WebUI8081TCP运维访问
Spark UI4040TCP运维访问
Doris FE8030/9030TCPFE 管理口/查询口
Grafana3000TCP运维访问
Prometheus/VM9090/8428TCP监控采集
节点间通信全开TCP集群内部

内网集群内部通信端口:如果安全要求允许,集群节点之间建议直接放行整个网段:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
firewall-cmd --reload
plaintext

5.4 什么时候可以关防火墙#

内网数据平台环境,如果集群规模小、无外部访问、安全审计不严,调试阶段直接关掉省心:

systemctl stop firewalld
systemctl disable firewalld
plaintext

但如果你要过等保/安全审计,就用上面的按需放行方式,并保留完整的端口清单文档——审计时直接给清单,比「我关了防火墙」体面得多。

六、总结#

技能核心命令记住一点
SSH 登录ssh-keygen + ssh-copy-id密钥登录,禁用密码
SSH 调优UseDNS no解决连接慢
文件传输rsync -avP断点续传,比 scp 可靠
防火墙放行firewall-cmd --permanent --add-port=xxx/tcp--reload
集群互通放行整个内网网段省心且可审计

内网环境下的第一公里打通,就是这三件事:SSH 能登、文件能传、端口能通。 搞定这三样,后面搭镜像源、装 Docker、部署数据平台才有基础。


本文首发于掘金 · 作者:七万号 扎根雄安新区中关村科技园,专注受限环境下软件搭建与数据平台落地

打通第一公里:内网 SSH、SCP 与防火墙策略
https://realcpf.tech/blog/airgapped-ssh-scp-firewall
Author 刘佳成
Published at 2026年8月1日