CentOS 远程 SSH 连接是服务器管理中常用的技术,它允许用户通过网络安全地访问和管理 CentOS 服务器,本文将详细介绍 CentOS 远程 SSH 连接的配置、使用及优化方法,帮助用户高效、安全地进行服务器操作。

SSH 协议基础
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中提供安全的远程登录和其他安全服务,与传统的 Telnet 协议不同,SSH 通过加密所有传输数据,确保了通信的机密性和完整性,在 CentOS 系统中,SSH 服务通常由 OpenSSH 软件包提供,支持密钥认证和密码认证两种方式,其中密钥认证更为安全。
安装与启动 SSH 服务
默认情况下,CentOS 系统可能未预装 SSH 服务,需手动安装,执行以下命令安装 OpenSSH:
sudo yum install openssh-server -y
安装完成后,启动 SSH 服务并设置开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
使用 systemctl status sshd 检查服务状态,确保服务正常运行。
SSH 客户端连接方法
使用密码认证
在本地终端中,通过以下命令连接远程服务器:
ssh username@remote_ip
首次连接时,系统会提示保存服务器的主机密钥,输入 yes 后输入用户密码即可登录。

使用密钥认证
密钥认证比密码认证更安全,首先在本地生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096
将公钥传输到远程服务器:
ssh-copy-id username@remote_ip
之后登录时无需输入密码,直接通过密钥对验证身份。
SSH 服务安全优化
修改默认端口
默认 SSH 端口为 22,易受攻击,编辑 /etc/ssh/sshd_config 文件,修改 Port 为自定义端口(如 2222),并重启 SSH 服务:
sudo systemctl restart sshd
禁用 root 登录
编辑 sshd_config 文件,设置 PermitRootLogin no,禁止 root 用户直接通过 SSH 登录,降低安全风险。
使用防火墙限制访问
通过 firewall-cmd 配置防火墙规则,仅允许特定 IP 访问 SSH 端口:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="2222" accept' sudo firewall-cmd --reload
常见问题排查
若无法连接 SSH,可检查以下问题:
- 网络连通性:使用
ping或telnet测试远程 IP 和端口是否可达。 - SSH 服务状态:确认
sshd服务正在运行,检查日志文件/var/log/secure定位错误。 - 防火墙或 SELinux:临时关闭防火墙(
sudo systemctl stop firewalld)或 SELinux(sudo setenforce 0)测试是否为策略阻拦导致。
FAQs
Q1:如何修改 SSH 连接超时时间?
A:编辑 /etc/ssh/sshd_config 文件,调整 ClientAliveInterval(心跳间隔,单位秒)和 ClientAliveCountMax(最大心跳次数),保存后重启 SSH 服务即可。
Q2:SSH 连接时出现 “Permission denied (publickey,password)” 错误怎么办?
A:该错误通常因认证失败导致,检查公钥是否正确上传到服务器(~/.ssh/authorized_keys),确保文件权限为 600,或尝试重新生成密钥对并传输。