在Linux系统中配置SSH服务器是实现远程管理和服务访问的重要步骤,以下将详细介绍完整的配置过程,包括安装、配置、安全优化及服务管理等内容。

安装SSH服务器
大多数Linux发行版默认未安装SSH服务器,需手动安装,以Ubuntu/Debian为例,使用以下命令:
sudo apt update sudo apt install openssh-server
对于CentOS/RHEL系统,使用:
sudo yum install openssh-server
安装完成后,SSH服务会自动启动,可通过systemctl status sshd(CentOS/RHEL)或systemctl status ssh(Ubuntu/Debian)检查服务状态。
配置SSH服务
SSH的主配置文件位于/etc/ssh/sshd_config,使用sudo nano /etc/ssh/sshd_config编辑文件,关键配置项如下:

| 配置项 | 默认值 | 建议修改值 | 说明 |
|---|---|---|---|
| Port | 22 | 自定义端口(如2222) | 修改默认端口可降低被扫描攻击的风险 |
| PermitRootLogin | yes | no | 禁止root用户直接登录,提升安全性 |
| PasswordAuthentication | yes | no | 禁用密码登录,强制使用密钥认证(需先配置密钥) |
| PubkeyAuthentication | yes | yes | 启用公钥认证 |
| AllowUsers | 无 | 允许的用户名 | 限制仅特定用户可登录,如AllowUsers user1 user2 |
| MaxAuthTries | 6 | 3 | 限制每连接最大认证尝试次数,防止暴力破解 |
修改后保存文件,执行sudo systemctl restart sshd(CentOS/RHEL)或sudo systemctl restart ssh(Ubuntu/Debian)重启服务。
生成SSH密钥对(可选)
为提升安全性,建议使用密钥认证替代密码,在客户端生成密钥对:
ssh-keygen -t rsa -b 4096
按提示生成公钥(~/.ssh/id_rsa.pub)和私钥(~/.ssh/id_rsa),将公钥上传至服务器:
ssh-copy-id username@server_ip
若ssh-copy-id不可用,可通过以下方式手动添加:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
防火墙与SELinux配置
确保防火墙允许SSH流量,以Ubuntu为例(使用ufw):
sudo ufw allow 2222/tcp # 替换为自定义端口 sudo ufw enable
CentOS/RHEL(使用firewalld):
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
若开启SELinux(如CentOS),需执行:
sudo semanage port -a -t ssh_port_t -p tcp 2222
安全增强措施
- 禁用密码登录:确认
PasswordAuthentication no已配置,并重启SSH服务。 - 定期更新:保持系统和SSH包最新,执行
sudo apt upgrade或sudo yum update。 - 日志监控:通过
/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)监控登录尝试。 - 失败封禁:使用
fail2ban工具自动封禁恶意IP,安装后配置/etc/fail2ban/jail.local。
常见问题排查
- 连接超时或拒绝:检查防火墙规则、SSH服务状态及端口是否正确。
- 权限错误:确保服务器端
~/.ssh目录权限为700,authorized_keys权限为600。
FAQs
Q1: 如何修改SSH默认端口后无法连接?
A: 可能原因包括防火墙未开放新端口、SELinux未识别新端口或配置文件语法错误,检查/etc/ssh/sshd_config中Port值是否正确,执行sudo ss -tulnp | grep 新端口确认端口监听,并确保防火墙和SELinux允许该端口访问。
Q2: 忘记SSH服务器root密码如何重置?
A: 若能通过控制台登录,可执行sudo passwd root重置密码;若无法登录,需进入单用户模式(重启时按e编辑内核参数,将ro改为rw init=/sysroot/bin/sh,重启后执行chroot /sysroot修改密码)。
