CentOS 7 云服务器部署踩坑记(一):SSH 连接与服务器初始化

背景#

购买了阿里云 ECS 服务器(CentOS 7.9),准备部署 Hugo 博客和两个 Python Web 应用(Streamlit + Flask)。

这是整个系列的第一篇,记录刚拿到服务器时遇到的几个拦路问题:SSH 连不上、密码登录被拒、防火墙配置不知道该不该开。

本系列文章:

  1. SSH 连接与服务器初始化(本篇)
  2. Python 3.11 编译与 SSL 模块配置
  3. Hugo 博客部署与 Nginx 配置
  4. Python 包安装与 GCC 版本问题
  5. Supervisor 进程管理与应用启动

问题一:首次连接提示密钥指纹确认#

报错信息:

The authenticity of host '123.102.102.102 (123.102.102.102)' can't be established.
ED25519 key fingerprint is SHA256:xxx
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这是 SSH 的正常安全机制,首次连接新服务器会提示确认指纹,防止中间人攻击。直接输入 yes 回车即可,指纹会自动保存到本地 ~/.ssh/known_hosts,后续不再提示。


问题二:Permission denied (publickey)#

报错信息:

root@123.102.102.102: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

原因是阿里云服务器默认禁用密码登录,只允许密钥认证。

方式一:通过控制台开启密码登录(推荐)

  1. 登录阿里云 ECS 控制台,「重置实例密码」设置新密码
  2. 点击「远程连接」→「Workbench 远程连接」进入网页终端
  3. 执行以下命令:
sudo sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd

之后就可以用密码 SSH 登录了。

方式二:使用密钥对登录

如果创建服务器时绑定了密钥对:

chmod 400 /你的私钥路径/xxx.pem
ssh -i /你的私钥路径/xxx.pem root@123.102.102.102

问题三:FirewallD is not running#

报错信息:

FirewallD is not running

CentOS 7 的防火墙服务(firewalld)默认未启动。有两种处理方式:

方式一:启动系统防火墙

sudo systemctl start firewalld
sudo systemctl enable firewalld

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

方式二:直接用阿里云安全组(更简单)

跳过系统防火墙,在阿里云控制台配置安全组入方向规则即可:

端口范围 授权对象
80/80 0.0.0.0/0
443/443 0.0.0.0/0

两种方式选一种就够,不需要都配。


问题汇总#

问题 根因 解决耗时
SSH 指纹确认 首次连接的安全机制 1 分钟
密码登录被拒 默认禁用密码认证 5 分钟
防火墙未运行 服务未启动 3 分钟

附:服务器初始化脚本#

成功登录后执行,完成基础环境配置:

# 更新系统
sudo yum update -y

# 安装基础工具
sudo yum install -y epel-release
sudo yum install -y git wget curl vim yum-utils gcc gcc-c++ \
    openssl-devel bzip2-devel libffi-devel zlib-devel

# 安装 Nginx
sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# 安装 Supervisor(进程管理)
sudo yum install -y supervisor
sudo systemctl enable supervisord
sudo systemctl start supervisord

下一篇:Python 3.11 编译与 SSL 模块配置