在现代IT运维中,通过SSH(Secure Shell)协议远程管理服务器是不可或缺的技能,CentOS作为企业级Linux发行版的佼佼者,其SSH服务的配置与安全至关重要,本文将详细介绍如何在CentOS服务器上配置SSH服务,并指导用户如何使用Windows平台上流行的PuTTY工具进行安全、高效的远程连接。
第一步:CentOS 服务器端 SSH 配置
在开始连接之前,我们需要确保CentOS服务器上的SSH服务(通常为OpenSSH)已经正确安装、运行并经过了安全优化。
检查并启动SSH服务
大多数CentOS安装默认会包含OpenSSH服务器,您可以通过以下命令检查其运行状态:
systemctl status sshd
如果服务未运行,可以使用以下命令启动并设置其开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
核心配置文件 /etc/ssh/sshd_config
SSH服务的主要配置文件是 /etc/ssh/sshd_config
,建议在修改前先创建一个备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器(如 vi
或 nano
)打开该文件进行修改,以下是一些关键配置项及其说明,合理配置它们能显著提升服务器的安全性。
配置项 | 默认值 | 建议值 | 说明 |
---|---|---|---|
Port | 22 | 2222 (或其他非标准端口) | 更改默认端口可以有效抵御自动化扫描攻击。 |
PermitRootLogin | yes | no | 禁止root用户直接登录,是重要的安全措施,普通用户登录后可使用 sudo 提权。 |
PasswordAuthentication | yes | no | 在配置好密钥登录后,建议禁用密码登录,强制使用更安全的密钥认证。 |
PubkeyAuthentication | yes | yes | 确保启用公钥认证,这是SSH最安全的认证方式之一。 |
AllowUsers | (注释) | user1 user2 | 明确指定只允许哪些用户通过SSH登录,拒绝其他所有用户。 |
修改完配置文件后,务必保存并重启SSH服务以使更改生效:
sudo systemctl restart sshd
防火墙配置
如果您修改了SSH的默认端口(从22改为2222),必须在防火墙中放行新的端口,CentOS 7及以后版本默认使用 firewalld
。
# 添加新端口到public区域 sudo firewall-cmd --permanent --zone=public --add-port=2222/tcp # 重载防火墙配置 sudo firewall-cmd --reload
第二步:使用 PuTTY 从 Windows 客户端连接
PuTTY是Windows平台上一款免费、开源的SSH客户端,功能强大且广受欢迎。
基本密码连接
- 下载与运行:从PuTTY官网下载最新版本的
putty.exe
并运行。 - 配置连接信息:
- Host Name (or IP address): 输入您的CentOS服务器的IP地址或域名。
- Port: 输入您在服务器上配置的SSH端口(若未修改则为22)。
- Connection type: 确保选择为 “SSH”。
- 保存会话:在 “Saved Sessions” 输入一个易于识别的名称(如 “MyCentOS-Server”),然后点击 “Save” 按钮,方便下次快速连接。
- 发起连接:点击 “Open” 按钮,首次连接时,会弹出一个安全警告,提示服务器的密钥指纹未被缓存,点击 “是” 接受并保存该指纹。
- 登录:在打开的终端窗口中,依次输入您的用户名和密码,即可成功登录。
更安全的连接方式:SSH 密钥认证
使用密钥对(公钥和私钥)进行认证比传统密码更安全。
生成密钥对:
- 运行PuTTY套件中的
PuTTYgen.exe
。 - 选择 “SSH-2 RSA” 参数,设置密钥长度(建议2048位或更高),然后点击 “Generate”。
- 在生成过程中,需在空白区域随意移动鼠标以增加随机性。
- 生成后,可以为密钥设置一个密码(passphrase),增加一层保护。
- 点击 “Save private key” 将私钥(
.ppk
文件)保存在您的Windows计算机上。 - 复制文本框中显示的全部公钥内容。
- 运行PuTTY套件中的
在CentOS服务器上配置公钥:
- 使用密码方式登录到您的CentOS服务器。
- 在用户家目录下创建
.ssh
目录(如果不存在),并设置正确权限:mkdir -p ~/.ssh chmod 700 ~/.ssh
- 将从PuTTYgen复制的公钥内容粘贴到
~/.ssh/authorized_keys
文件中:echo "粘贴您的公钥内容" > ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
在PuTTY中配置私钥:
- 打开PuTTY,加载您之前保存的会话。
- 在左侧导航栏中,依次展开 “Connection” -> “SSH” -> “Auth”。
- 在 “Private key file for authentication” 框中,点击 “Browse” 按钮,选择您之前保存的
.ppk
私钥文件。 - 返回到 “Session” 界面,点击 “Save” 保存会话配置。
当您点击 “Open” 连接服务器时,PuTTY会使用私钥进行认证,您只需输入私钥的密码(如果设置了),而无需再输入系统用户密码。
安全最佳实践小编总结
- 禁用密码登录:在确保密钥登录正常工作后,将
sshd_config
中的PasswordAuthentication
设为no
。 - 禁止root登录:始终使用普通用户登录,通过
sudo
执行管理命令。 - 使用非标准端口:有效减少恶意扫描和暴力破解。
- 限制登录用户:利用
AllowUsers
或AllowGroups
指令,实现最小权限原则。 - 定期更新系统:保持OpenSSH和整个系统的软件包为最新版本,修复已知安全漏洞。
相关问答 (FAQs)
问题1:使用PuTTY连接时提示 “Connection refused”(连接被拒绝)怎么办?
解答:这个错误通常意味着服务器在指定端口上没有响应,请按以下步骤排查:
- 网络连通性:在Windows的命令提示符中使用
ping <服务器IP>
确认网络是否通畅。 - SSH服务状态:登录服务器(可通过控制台),检查
systemctl status sshd
确保服务正在运行。 - 端口与防火墙:确认PuTTY中填写的端口号与服务器
sshd_config
文件中Port
的设置一致,如果修改了端口,请务必检查服务器的防火墙(firewall-cmd --list-all
)是否已放行该端口。 - SELinux:如果SELinux处于强制模式,并且修改了默认端口,可能需要使用
semanage port -a -t ssh_port_t -p tcp <新端口号>
来允许SSH在新端口上监听。
问题2:配置SSH密钥后,PuTTY仍然提示 “Server refused our key”(服务器拒绝了我们的密钥)?
解答:这个问题通常与服务器端的文件权限或配置有关,请检查以下几点:
:确保该文件权限为 600
(-rw-------
),权限过于宽松(如对其他用户可读)会导致SSH服务出于安全考虑而忽略它。:确保用户家目录下的 .ssh
目录权限为700
(drwx------
)。- 用户家目录权限:确保用户家目录本身不能对其他用户有写权限。
:检查 /etc/ssh/sshd_config
文件,确保PubkeyAuthentication yes
这一项没有被注释掉或设置为no
。- 公钥格式:确保粘贴到
authorized_keys
文件中的公钥内容是完整的一行,没有多余的空格或换行符。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复