欢迎光临
我们一直在努力

从零实现es安装:服务器SSH远程环境搭建步骤

从零开始搭建Elasticsearch远程环境:SSH配置实战全解析

你是不是也遇到过这种情况——想在云服务器上装个 Elasticsearch 做日志分析,结果连第一步“怎么安全地连上去”就卡住了?别急,这几乎是每个初学者都会踩的坑。

今天我们就抛开花里胡哨的概念堆砌,

用最真实的开发视角

,带你一步步从一台裸机云服务器出发,打通 SSH 连接通道,并为后续的

Elasticsearch 安装

打下坚实基础。整个过程不依赖图形界面、不预设任何环境,真正做到“从零实现”。


为什么必须先搞定SSH?因为它才是真正的入口

很多人一上来就想下载 es 包、改配置文件,但忘了最关键的一点:

你的手根本碰不到那台远程服务器

。无论是阿里云 ECS、AWS EC2 还是自建 VPS,它们都躺在千里之外的数据中心里。

这时候,SSH 就是你唯一的“物理接口”。

🔥 一句话总结:没有 SSH,你就等于没拿到钥匙;钥匙不对,再好的 es 部署方案也只是纸上谈兵。

而更关键的是,Elasticsearch 本身对系统环境要求严苛(内存映射、文件句柄、JVM调优),所有这些设置都得通过命令行完成。所以,一个稳定、安全、可控的 SSH 环境,不是“可选项”,而是“必选项”。


第一步:让服务器“听得见”——开启并加固 SSH 服务

假设你刚买了一台 Ubuntu 20.04 的云主机,公网 IP 是

123.56.78.90

,现在要做三件事:

  • 确保 SSH 服务已安装并运行;
  • 修改默认配置提升安全性;
  • 允许外部连接进来。
  • 检查 SSH 是否就绪

    登录控制台(比如阿里云的 Web Terminal),执行:

    sudo systemctl status ssh

    如果提示

    active (running)

    ,说明服务已经在跑了。如果没有,立刻安装:

    sudo apt update && sudo apt install openssh-server -y

    安装完后启动并设置开机自启:

    sudo systemctl enable ssh
    sudo systemctl start ssh

    ✅ 到这里,SSH 服务已经活了,但它还在用默认端口 22,且允许 root 登录——这是生产环境的大忌。


    加固 SSH 配置:别等被爆破了才后悔

    编辑主配置文件:

    sudo nano /etc/ssh/sshd_config

    重点修改以下几项:

    参数

    推荐值

    作用

    Port

    2222

    改变默认端口,减少自动化扫描攻击

    PermitRootLogin

    no

    禁止 root 直接登录

    PasswordAuthentication

    yes

    (初期)

    先保留密码登录方便调试

    PubkeyAuthentication

    yes

    启用密钥认证

    AllowUsers

    esadmin

    只允许指定用户登录

    保存退出后重启服务:

    sudo systemctl restart ssh

    ⚠️ 注意:改完端口后,下次连接就得带上

    -p

    参数了:

    ssh esadmin@123.56.78.90 -p 2222


    创建专用用户:永远不要用 root 操作

    sudo adduser esadmin
    sudo usermod -aG sudo esadmin # 赋予 sudo 权限

    然后切换到该用户,生成专属工作目录:

    su – esadmin
    mkdir ~/.ssh && chmod 700 ~/.ssh

    这一步的意义在于:

    最小权限原则 + 操作可追溯

    。一旦出问题,能快速定位是哪个账户引发的。


    第二步:建立免密登录通道——告别重复输密码

    每次输入密码不仅麻烦,还容易暴露风险。真正的高手,都是靠

    SSH 密钥对

    实现无缝连接。

    在本地生成密钥(你的电脑上执行)

    ssh-keygen -t ed25519 -C "deploy@company.com"

    建议命名为

    ~/.ssh/id_ed25519_es

    ,避免和其它项目混淆。

    💡 为什么不选 RSA?因为 ed25519 更短、更快、更安全,现代 OpenSSH 都支持。

    接着把公钥上传到服务器:

    ssh-copy-id -i ~/.ssh/id_ed25519_es.pub esadmin@123.56.78.90 -p 2222

    测试是否成功:

    ssh -i ~/.ssh/id_ed25519_es esadmin@123.56.78.90 -p 2222

    如果直接登录成功,恭喜你,已经迈入自动化运维的第一步!


    提高安全等级:关闭密码登录

    确认密钥登录无误后,回到服务器,再次编辑

    /etc/ssh/sshd_config

    PasswordAuthentication no

    重启服务:

    sudo systemctl restart ssh

    从此以后,只有持有私钥的人才能进来,彻底杜绝暴力破解的可能性。


    第三步:准备 Elasticsearch 运行环境

    SSH 通了,接下来就是为

    es 安装

    铺路。记住一句话:

    Elasticsearch 不怕慢,就怕系统拦着不让它跑

    安装 Java —— es 的命根子

    es 8.x 官方推荐使用 JDK 17:

    sudo apt install openjdk-17-jdk -y

    验证:

    java -version

    输出应类似:

    openjdk version "17.0.9" 2023-10-17
    OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-120.04)

    设置环境变量(写入

    .bashrc

    ):

    echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc


    调整系统参数 —— 绕开 es 的“启动雷区”

    es 启动时会做一系列“自检”(bootstrap checks),只要有一项不过,直接拒绝启动。最常见的两个问题是:

    • max file descriptors too low

    • max virtual memory areas vm.max_map_count [65536] is too low

    我们提前解决:

    1. 提高文件句柄限制

    sudo nano /etc/security/limits.conf

    添加:

    esadmin soft nofile 65536
    esadmin hard nofile 65536
    esadmin soft nproc 4096
    esadmin hard nproc 4096

    2. 增大内存映射区域

    sudo sysctl -w vm.max_map_count=262144

    永久生效:

    echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf

    3. 关闭 Swap(强烈建议)

    sudo swapoff -a

    永久关闭:编辑

    /etc/fstab

    ,注释掉包含

    swap

    的那一行。

    📌 提示:改完这些后,一定要重新登录用户,否则 limits 不会加载!


    第四步:正式安装 Elasticsearch(单节点模式)

    准备工作全部就绪,现在可以开始真正的

    es 安装

    了。

    下载 & 解压

    cd /tmp
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.3-linux-x86_64.tar.gz

    sudo mkdir -p /opt/elasticsearch
    sudo tar -xzf elasticsearch-8.11.3-linux-x86_64.tar.gz -C /opt/elasticsearch –strip-components=1

    赋权给 esadmin 用户:

    sudo chown -R esadmin:esadmin /opt/elasticsearch


    修改配置文件

    切换到用户:

    su – esadmin
    cd /opt/elasticsearch

    编辑

    config/elasticsearch.yml

    # 节点名称
    node.name: node-1

    # 绑定外网地址
    network.host: 0.0.0.0

    # HTTP 端口
    http.port: 9200

    # 单节点模式(跳过集群发现)
    discovery.type: single-node

    # 数据路径(可选)
    path.data: /opt/elasticsearch/data
    path.logs: /opt/elasticsearch/logs

    ⚠️ 注意:

    network.host: 0.0.0.0

    是为了让外部能访问。但在公网部署时,务必配合防火墙限制来源 IP!


    启动 es

    ./bin/elasticsearch -d -p pid.txt

    参数说明:

    -d

    :后台运行

    -p pid.txt

    :记录进程 ID,便于管理

    查看日志确认启动状态:

    tail -f logs/*.log | grep "started"

    看到

    started

    字样就表示成功了!


    验证安装结果

    本地打开终端,测试接口:

    curl http://123.56.78.90:9200 -k

    预期输出:

    {
    "name" : "node-1",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "abc123…",
    "version" : {
    "number" : "8.11.3",
    "build_flavor" : "default",
    "lucene_version" : "9.7.0",
    "tagline" : "You Know, for Search"
    }
    }

    🎉 成功返回!这意味着你已经完成了一个完整的远程 es 安装流程。


    常见坑点与应对策略(真实经验分享)

    ❌ 问题1:SSH 连不上,一直 timeout

    排查思路

    1. 检查云平台安全组是否放行了

    2222

    端口;

    2. 查看服务器防火墙:

    bash
    sudo ufw status # Ubuntu
    sudo firewall-cmd –list-all # CentOS

    3. 添加规则:

    bash
    sudo ufw allow 2222/tcp


    ❌ 问题2:es 启动失败,报 “bootstrap checks failed”

    典型错误信息:

    max file descriptors [4096] for elasticsearch process is too low

    解决方案

    – 确认

    /etc/security/limits.conf

    已正确配置;

    重新登录用户

    !很多同学忽略了这一点,limits 只有在新会话中才生效;

    – 使用

    ulimit -n

    查看当前限制。


    ❌ 问题3:能启动 es,但外部无法访问 9200

    原因通常是:

    – es 配置中

    network.host

    未设为

    0.0.0.0

    – 防火墙未开放 9200 端口;

    – 云平台安全组没加规则。

    补救措施:

    sudo ufw allow 9200/tcp

    并在安全组中添加入方向规则。


    最佳实践总结:老司机的经验之谈

    实践

    建议

    ✅ 使用非 root 用户 永远不要用 root 远程登录或运行 es
    ✅ 密钥认证优先 关闭密码登录,只留密钥一条路
    ✅ 改变 SSH 默认端口 虽然不能防高级攻击,但能挡住 99% 的机器人扫荡
    ✅ 日志审计 定期检查

    /var/log/auth.log

    ,发现异常登录尝试

    ✅ 自动化备份 用 cron + rsync 定时同步配置和数据快照

    写在最后:SSH 不是工具,是思维方式

    很多人觉得 SSH 只是个远程登录命令,其实不然。当你学会用密钥管理多台机器、用 config 文件简化连接、用隧道转发保护敏感端口时,你就已经进入了 DevOps 的大门。

    而这次从零搭建 es 环境的过程,本质上是一次

    系统工程能力的综合训练

    :网络、权限、安全、资源调度……每一个细节都在影响最终结果。

    下一步你可以尝试:

    – 用 Ansible 自动化部署整套流程;

    – 搭建 Kibana 实现可视化;

    – 配置 TLS 加密通信;

    – 扩展为多节点集群。

    但无论走多远,别忘了那个最初让你连上服务器的 SSH 命令——它是你通往分布式世界的起点。

    如果你在部署过程中遇到了其他问题,欢迎留言交流,我们一起 debug。

    赞(0)
    未经允许不得转载:171主机测评 » 从零实现es安装:服务器SSH远程环境搭建步骤
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址