在CentOS系统中,通过RPM包管理方式安装和配置SSH(Secure Shell)服务是进行远程安全管理的基石,SSH协议通过加密网络通信,为系统管理员提供了一种安全的方式来登录并执行命令,有效防止了信息在传输过程中被窃听或篡改,本文将详细介绍在CentOS环境下如何检查、安装、配置并启动SSH服务,确保您能够安全、高效地管理您的服务器。
检查SSH服务是否已安装
在开始安装之前,首先需要确认系统中是否已经安装了OpenSSH服务器软件包,大多数CentOS默认安装会包含SSH客户端,但服务器端(openssh-server
)可能需要手动安装,您可以通过以下几种方式进行检查:
使用
rpm
命令查询:rpm -qa | grep openssh
这个命令会列出所有已安装的、名称中包含“openssh”的软件包,请查找输出结果中是否有
openssh-server-x.x.x
这样的条目,如果存在,说明SSH服务已经安装。检查SSH服务状态:
systemctl status sshd
如果服务已安装并正在运行,此命令会显示
active (running)
状态,如果未安装,则会提示“Unit sshd.service could not be found”。检查SSH版本:
ssh -V
这个命令主要用于检查SSH客户端的版本,但它的存在也间接表明系统对SSH有基本支持。
如果确认系统未安装openssh-server
,则可以进入下一步进行安装。
使用YUM/DNF安装SSH服务
在CentOS上,最推荐、最便捷的RPM安装方式是使用yum
(CentOS 7及更早版本)或dnf
(CentOS 8及更新版本)包管理器,它们能够自动处理软件包的依赖关系,确保安装过程顺利无误。
对于CentOS 7:
sudo yum install openssh-server
对于CentOS 8/9/Stream:
sudo dnf install openssh-server
执行命令后,系统会列出需要安装的软件包及其依赖项,提示您确认,输入y
并回车,yum
/dnf
便会自动从官方仓库下载并安装所有必要的文件,这种在线安装方式是绝大多数场景下的首选。
手动使用RPM命令安装(离线场景)
在某些无法连接互联网的隔离环境中,您可能需要手动下载RPM包进行安装,这种方法需要您自行解决所有依赖关系,相对复杂。
- 下载RPM包: 您需要在一台可以联网的相同系统版本的CentOS机器上,或者从官方镜像站点下载
openssh-server
的RPM包及其所有依赖包(如openssl
等)。 - 传输到目标服务器: 使用U盘、移动硬盘等方式将下载好的
.rpm
文件拷贝到目标CentOS服务器上。 - 执行安装命令:
sudo rpm -ivh openssh-server-*.rpm
-i
表示安装。-v
显示详细信息。-h
显示安装进度条。
如果在安装过程中提示缺少依赖,您需要先手动安装这些依赖的RPM包,这个过程可能会非常繁琐,因此除非必要,否则强烈建议使用yum
/dnf
。
配置SSH服务
安装完成后,SSH服务的默认配置通常可以满足基本需求,但出于安全考虑,对其进行定制化配置是管理员的必备技能,主配置文件位于/etc/ssh/sshd_config
,在修改前,建议先备份原文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器(如vi
或nano
)打开配置文件:
sudo vi /etc/ssh/sshd_config
以下是一些关键配置项的说明和推荐设置:
配置项 | 默认值 | 推荐设置与说明 |
---|---|---|
Port 22 | 22 | 建议修改为非标准端口(如2222),可以有效抵御自动化扫描和攻击。 |
PermitRootLogin yes | yes | 强烈建议改为no ,禁止root用户直接登录,应使用普通用户登录后,通过su 或sudo 提权。 |
PasswordAuthentication yes | yes | 如果计划使用SSH密钥对登录,可以设置为no ,禁用密码认证,安全性更高。 |
ListenAddress 0.0.0.0 | 0.0.0 | 可以设置为服务器的特定IP地址,限制SSH服务只监听在该IP上,增加一层访问控制。 |
AllowUsers | (未设置) | 可以设置此参数,只允许特定的用户(或用户组)登录,AllowUsers admin user1 。 |
修改完成后,保存并退出编辑器。
启动与管理SSH服务
配置更改后,需要启动SSH服务(如果尚未运行)并重新加载配置使其生效,在Systemd系统(CentOS 7+)中,使用systemctl
命令进行管理。
启动SSH服务:
sudo systemctl start sshd
设置开机自启:
sudo systemctl enable sshd
重启服务以应用新配置:
sudo systemctl restart sshd
查看服务状态:
sudo systemctl status sshd
配置防火墙
如果服务器开启了防火墙(默认开启firewalld
),必须允许SSH服务的端口通过,否则外部客户端将无法连接。
允许默认SSH服务(端口22):
sudo firewall-cmd --permanent --add-service=ssh
如果修改了SSH端口(例如改为2222):
sudo firewall-cmd --permanent --add-port=2222/tcp
重新加载防火墙规则使配置生效:
sudo firewall-cmd --reload
至此,您的CentOS服务器上的SSH服务已经安装、配置并运行起来了,您可以从任何SSH客户端(如Linux终端、Windows的PuTTY或Xshell)使用ssh username@server_ip
命令(如果修改了端口,需使用-p
参数指定)来安全地连接和管理您的服务器。
相关问答FAQs
问题1:我按照教程修改了SSH端口,但就是无法连接,可能是什么原因?
解答: 这是一个非常常见的问题,通常由以下几个原因导致:
- 防火墙未更新: 这是最可能的原因,您在
sshd_config
中修改了端口,但忘记在firewalld
中开放新的TCP端口,请确保使用firewall-cmd --permanent --add-port=新端口号/tcp
命令添加了新端口,并执行了firewall-cmd --reload
。 - SSH服务未重启: 修改
sshd_config
文件后,必须使用sudo systemctl restart sshd
命令重启服务,新的配置才能生效。 - SELinux问题: 如果您的系统开启了SELinux,它可能会阻止SSH在非标准端口上监听,您需要使用
semanage
命令来允许SSH使用新端口,sudo semanage port -a -t ssh_port_t -p tcp 新端口号
。 - 客户端连接错误: 确保您在SSH客户端中使用了正确的端口号(例如
ssh -p 新端口号 user@host
)。
问题2:为什么要禁用root用户的SSH登录?这样做之后我该如何执行管理员操作?
解答: 禁止root用户通过SSH直接登录是一项重要的安全最佳实践,原因如下:
- 减少攻击面:
root
是每个Linux系统都存在的默认超级用户账户,是暴力破解攻击的首要目标,禁用它可以直接堵上这个最大的漏洞。 - 责任追溯: 如果多个管理员都使用
root
登录,系统日志中将很难区分是谁执行了某项关键操作,使用各自的普通用户登录,再通过sudo
提权,可以清晰地记录每个管理员的操作行为。 - 降低操作风险: 普通用户登录后,只有在必要时才使用
sudo
执行特权命令,可以有效避免因误操作而破坏整个系统。
执行管理员操作的正确方式是:
- 创建一个普通用户,例如
admin
。 - 将该用户添加到
wheel
用户组(sudo
的默认管理员组):sudo usermod -aG wheel admin
。 - 确保在
/etc/sudoers
文件中,wheel
组被赋予了sudo
权限(默认是启用的)。 - 之后,您就可以使用
admin
这个普通用户登录SSH,当需要执行管理员命令时,只需在命令前加上sudo
,例如sudo yum update
,然后输入admin
用户的密码即可。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复