外网如何访问内网CentOS服务器?4种高效方案详解
前置条件准备
确保CentOS系统已启用SSH服务并开放22端口,执行以下命令验证:
sudo systemctl status sshd
sudo firewall-cmd --list-ports
方案一:路由器端口映射
操作步骤
- 登录路由器管理界面,查找「端口转发」或「虚拟服务器」功能
- 创建新规则:外部端口(如8022)映射到内网CentOS的IP和22端口
- 通过
公网IP:8022
实现SSH连接
注意:公网IP可能动态变化,需结合DDNS服务
方案二:SSH反向隧道
建立持久化连接
ssh -fNTR 2222:localhost:22 公网服务器用户@公网IP
通过公网服务器执行ssh -p 2222 内网用户@localhost
实现访问
方案三:frp内网穿透
服务端配置(公网服务器)
# frps.ini
[common]
bind_port = 7000
客户端配置(内网CentOS)
# frpc.ini
[common]
server_addr = 公网IP
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
连接命令:ssh -p 6000 用户名@公网IP
方案四:Cloudflare Tunnel
- 安装Cloudflared客户端
- 执行认证命令:
cloudflared tunnel login
- 创建隧道并配置SSH转发:
cloudflared tunnel create ssh-tunnel
cloudflared tunnel route dns ssh-tunnel ssh.yourdomain.com
echo 'ssh://localhost:22' > config.yml
cloudflared tunnel run ssh-tunnel
安全加固措施
- 修改SSH默认端口:
Port 49215
- 启用密钥认证:
PasswordAuthentication no
- 配置防火墙白名单:
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="123.45.67.89" port port="22" protocol="tcp" accept'
- 定期更新系统:
sudo yum update -y