在服务器管理领域,SSH(Secure Shell)协议是保障远程通信安全的基石,它通过加密技术为数据传输提供了一个安全的通道,有效防止信息泄露和中间人攻击,对于广泛使用的CentOS系统而言,正确部署和配置SSH服务是每一位系统管理员的必备技能,本文将详细介绍在CentOS上部署SSH的完整流程,从安装、配置到安全加固,旨在帮助您构建一个稳定且安全的远程访问环境。
检查与安装OpenSSH服务器
在开始之前,首先需要确认CentOS系统是否已经安装了OpenSSH服务器软件包,大多数CentOS默认安装会包含此服务,但最小化安装版本可能需要手动安装。
打开终端,使用以下命令检查SSH服务的状态:
systemctl status sshd
如果系统返回类似 active (running)
的信息,说明SSH服务已经安装并正在运行,如果提示 Unit sshd.service could not be found
,则表示尚未安装。
对于CentOS 7及更高版本,可以使用 dnf
或 yum
包管理器进行安装,推荐使用 dnf
:
sudo dnf install openssh-server -y
对于较旧的CentOS版本,则使用 yum
:
sudo yum install openssh-server -y
安装完成后,SSH服务(守护进程名为 sshd
)就已经准备就绪。
启动与启用SSH服务
安装完毕后,需要手动启动SSH服务,并设置其为开机自启动,以确保服务器重启后远程连接依然可用。
执行以下命令启动 sshd
服务:
sudo systemctl start sshd
使用 enable
命令将其设置为开机自启:
sudo systemctl enable sshd
可以再次运行 systemctl status sshd
来确认服务已成功启动并处于激活状态。
配置防火墙规则
CentOS系统默认使用 firewalld
作为防火墙管理工具,为了允许外部客户端通过SSH连接到服务器,必须在防火墙中开放相应的端口,SSH默认使用TCP的22端口。
执行以下命令,永久性地开放SSH服务(这会自动处理22端口):
sudo firewall-cmd --permanent --add-service=ssh
为了让规则立即生效,需要重新加载防火墙配置:
sudo firewall-cmd --reload
您可以使用 sudo firewall-cmd --list-all
命令来验证SSH服务是否已成功添加到防火墙规则中。
SSH核心配置文件详解
SSH服务的主要配置文件位于 /etc/ssh/sshd_config
,通过修改此文件,可以极大地增强SSH服务器的安全性,在进行任何修改前,建议先备份原始文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器(如 vi
或 nano
)打开配置文件:
sudo vi /etc/ssh/sshd_config
以下是一些关键配置参数的说明,您可以根据安全需求进行调整:
参数 | 默认值 | 说明 |
---|---|---|
Port | 22 | SSH服务监听的端口,修改为非标准端口可有效抵御自动化扫描攻击。 |
PermitRootLogin | yes | 是否允许root用户直接登录,出于安全考虑,建议设置为 prohibit-password 或 no 。 |
PasswordAuthentication | yes | 是否启用密码认证,建议在配置好密钥登录后,将其设置为 no ,禁用密码登录。 |
PubkeyAuthentication | yes | 是否启用公钥认证,这是比密码更安全的认证方式,建议保持 yes 。 |
AllowUsers | (无) | 限制只有指定的用户可以登录。AllowUsers user1 user2@192.168.1.100 。 |
修改完配置文件后,必须重启 sshd
服务才能使更改生效:
sudo systemctl restart sshd
客户端连接测试
至此,SSH服务器已部署完毕,您可以从任何支持SSH协议的客户端(如另一台Linux/macOS终端、Windows的PowerShell或PuTTY)进行连接。
基本连接命令格式为:
ssh username@server_ip_address
如果您修改了默认端口,则需要使用 -p
参数指定端口号:
ssh -p 2222 username@server_ip_address
首次连接时,系统会提示您接受服务器的公钥指纹,输入 yes
即可,随后,根据您配置的认证方式(密码或密钥)完成登录。
相关问答FAQs
问题1:我修改了SSH端口后无法连接,怎么办?
解答: 这是最常见的配置问题之一,请确认您在客户端连接时使用了正确的 -p
参数和新端口号,最可能的原因是防火墙规则没有更新,您需要重新运行防火墙命令,开放新的端口,如果新端口是 2222
,应执行:sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
,如果问题依旧,请检查SELinux是否限制了SSH端口,可以使用 semanage port -a -t ssh_port_t -p tcp 2222
来为SELinux添加新的SSH端口。
问题2:如何使用SSH密钥对进行登录,并禁用密码认证?
解答: 这是提升SSH安全性的最佳实践,步骤如下:
- 在客户端生成密钥对:在您的本地机器上运行
ssh-keygen -t rsa -b 4096
,按提示操作即可生成私钥(~/.ssh/id_rsa
)和公钥(~/.ssh/id_rsa.pub
)。 - 将公钥复制到服务器:使用
ssh-copy-id username@server_ip_address
命令,它会自动将您的公钥添加到服务器上对应用户的~/.ssh/authorized_keys
文件中,并设置正确的权限。 - 测试密钥登录:断开当前连接,重新尝试SSH登录,此时应无需输入密码即可直接登录。
- 禁用密码认证:登录服务器,编辑
/etc/ssh/sshd_config
文件,找到PasswordAuthentication yes
这一行,将其改为PasswordAuthentication no
。 - 重启SSH服务:运行
sudo systemctl restart sshd
。
完成以上步骤后,您的SSH服务器将只接受密钥认证,大大提高了安全性,请务必在禁用密码认证前,确保密钥登录已成功配置,否则您将被锁定在服务器之外。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复