温馨提示×

CentOS如何配置SSH

小樊
53
2026-08-19 06:47:03
栏目: 智能运维

在 CentOS 系统中配置 SSH 主要包括 安装 SSH 服务、启动服务、配置端口/安全策略、开放防火墙端口、设置开机自启 等步骤。下面分别说明 CentOS 7 / 8 / Stream 的常用做法(差异不大)。


一、安装 SSH 服务(OpenSSH)

CentOS 通常默认已安装,如未安装可手动安装:

sudo yum install -y openssh-server

CentOS 8 / Stream 可用 dnf

sudo dnf install -y openssh-server

二、启动并设置开机自启

1️⃣ 启动 SSH 服务

sudo systemctl start sshd

2️⃣ 设置开机自启

sudo systemctl enable sshd

3️⃣ 查看状态

sudo systemctl status sshd

看到 active (running) 表示正常运行。


三、配置 SSH(重点)

SSH 配置文件路径:

/etc/ssh/sshd_config

1️⃣ 备份原配置(建议)

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2️⃣ 编辑配置文件

sudo vi /etc/ssh/sshd_config

3️⃣ 常见安全配置项

配置项 说明 建议
Port 22 默认端口 可改为其他端口(如 2222)
PermitRootLogin 是否允许 root 登录 no
PasswordAuthentication 密码登录 no(配合密钥)
PubkeyAuthentication 密钥登录 yes
UseDNS 反向解析 no(加快连接)
MaxAuthTries 最大尝试次数 3

示例:

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
UseDNS no
MaxAuthTries 3

4️⃣ 重启 SSH 服务

sudo systemctl restart sshd

四、配置防火墙(重要)

1️⃣ 开放 SSH 端口(以 22 为例)

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

2️⃣ 如果修改了端口(如 2222)

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

3️⃣ 查看规则

sudo firewall-cmd --list-all

五、配置 SSH 密钥登录(推荐)

1️⃣ 本地生成密钥(客户端)

ssh-keygen -t rsa -b 4096

2️⃣ 拷贝公钥到服务器

ssh-copy-id user@server_ip

或手动:

cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3️⃣ 设置权限(服务器端)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

六、SELinux 注意事项(CentOS 特有)

如果修改了 SSH 端口:

sudo semanage port -a -t ssh_port_t -p tcp 2222

查看端口是否生效:

semanage port -l | grep ssh

七、测试 SSH 连接

ssh user@server_ip -p 2222

八、常见问题

❌ 连接被拒绝

  • sshd 未启动
  • 防火墙未放行端口
  • SELinux 未放行端口

❌ 密钥登录失败

  • 权限不对
  • PubkeyAuthentication 被禁用
  • 用户目录权限问题

如果你愿意,我可以:

  • ✅ 给你一份 生产环境 SSH 安全配置模板
  • ✅ 针对 CentOS 7 或 8 给你精确命令
  • ✅ 帮你排查 SSH 登录失败问题

只要告诉我你的 CentOS 版本和使用场景即可。

0