安装并启动 SSH 服务
CentOS 7默认通常已安装OpenSSH服务器,但检查其状态并确保其正常运行是首要步骤。

可以通过以下命令检查是否已安装openssh-server软件包:
yum list installed | grep openssh-server
如果未安装,可以使用yum命令进行安装:
sudo yum install -y openssh-server
安装完成后,需要启动SSH服务并设置其为开机自启,以确保服务器重启后SSH服务依然可用:
sudo systemctl start sshd sudo systemctl enable sshd
检查SSH服务的运行状态,确认其active (running):
sudo systemctl status sshd
SSH 配置文件详解
SSH服务的主要配置文件是/etc/ssh/sshd_config,通过修改此文件,可以极大地增强服务器的安全性,在进行任何修改后,都需要使用sudo systemctl restart sshd命令重启服务使配置生效。
以下是一些关键配置参数的说明和推荐设置:
| 配置参数 | 默认值 | 推荐设置 | 说明 |
|---|---|---|---|
Port |
22 | 自定义端口(如2222) | 更改默认端口可以有效规避自动化扫描攻击。 |
PermitRootLogin |
yes | no | 禁止root用户直接登录,是重要的安全措施。 |
PasswordAuthentication |
yes | no | 禁用密码认证,强制使用密钥对登录,安全性更高。 |
PubkeyAuthentication |
yes | yes | 启用公钥认证,这是使用密钥对登录的基础。 |
AllowUsers |
(无) | 指定用户名 | 限制只有特定用户可以通过SSH登录,实现白名单控制。 |
修改端口时,还需同时更新防火墙规则,放行新的端口,将端口改为2222:

sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
使用 SSH 密钥对进行安全连接
相较于传统密码,SSH密钥对提供了更高的安全性和便利性,它由一个私钥和一个公钥组成,私钥保留在客户端,公钥则放置在服务器上。
-
在客户端生成密钥对: 在本地计算机上(可以是Linux、macOS或Windows with PowerShell OpenSSH)运行:
ssh-keygen -t rsa -b 4096
按提示操作,通常可以直接按回车使用默认路径和不设置密码,这会在
~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。 -
将公钥复制到服务器: 使用
ssh-copy-id命令可以安全地将公钥上传到CentOS 7服务器的指定用户下:ssh-copy-id username@server_ip_address
此命令会自动将公钥内容追加到服务器上
~/.ssh/authorized_keys文件中,并设置正确的文件权限。
完成以上步骤后,就可以在客户端使用私钥无密码登录服务器了。
常用 SSH 客户端命令
掌握一些常用的SSH命令能提升工作效率。

- 基本登录:
ssh username@server_ip_address
- 指定端口登录:
ssh -p 2222 username@server_ip_address
- 使用特定私钥文件登录:
ssh -i /path/to/your/private_key username@server_ip_address
- 通过SSH执行远程命令(无需登录交互式Shell):
ssh username@server_ip_address "ls -l /home"
相关问答 (FAQs)
Q1: 修改SSH默认端口后无法连接,怎么办?
A: 这通常是由于防火墙没有放行新端口导致的,请确保在修改sshd_config文件并重启服务后,已经更新了防火墙规则,在CentOS 7中,使用firewall-cmd命令添加新端口,新端口为2222:
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
如果服务器前有云服务商的安全组(如阿里云、腾讯云),也需要在安全组规则中放行该新的TCP端口。
Q2: 配置了SSH密钥,但仍然提示输入密码,为什么? A: 这个问题通常与服务器端的文件或目录权限有关,SSH服务对权限要求非常严格,请登录服务器检查以下权限:
- 用户主目录权限应为
755(drwxr-xr-x)。 ~/.ssh目录权限必须为700(drwx------)。~/.ssh/authorized_keys文件权限必须为600(-rw-------)。
可以使用以下命令修复权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
如果权限设置正确但问题依旧,可以查看SSH服务的日志文件/var/log/secure,其中通常会包含认证失败的详细原因。