CentOS 配置 SSH
一、SSH简介
Secure Shell(简称SSH)是一种加密的网络协议,用于在不安全的网络中安全地操作远程计算机,它提供了数据加密、身份验证和数据传输的功能,确保通信的安全性和完整性,SSH常用于远程登录、远程命令执行和文件传输等场景。
二、安装OpenSSH服务
1. 查看是否已安装
通过以下命令检查CentOS系统中是否已经安装了OpenSSH服务:
rpm qa | grep openssh
如果系统显示类似以下内容,则表示OpenSSH已经安装:
openssh7.4p111.el7.x86_64 opensshserver7.4p111.el7.x86_64 opensshclients7.4p111.el7.x86_64
2. 安装OpenSSH
如果未安装OpenSSH,可以使用以下命令进行安装:
yum install y opensshserver
安装完成后,可以通过以下命令启动SSH服务:
systemctl start sshd
并设置开机自启动:
systemctl enable sshd
三、配置OpenSSH服务
1. 编辑配置文件
OpenSSH的主配置文件是/etc/ssh/sshd_config
,使用vim或其他文本编辑器打开该文件:
vim /etc/ssh/sshd_config
2. 修改主要配置项
在配置文件中,可以设置多个选项来优化SSH服务:
监听端口: 默认为22,可以根据需要修改,将端口改为2222:
Port 2222
禁止root用户登录: 为了增强安全性,通常禁用root用户远程登录,找到并修改以下配置:
PermitRootLogin no
允许空密码登录: 禁用空密码登录:
PermitEmptyPasswords no
启用密码验证和公钥验证: 确保这两种验证方式都启用:
PasswordAuthentication yes PubkeyAuthentication yes
指定公钥库文件: 设置存储公钥的文件路径:
AuthorizedKeysFile .ssh/authorized_keys
其他安全设置: 如限制最大重试次数、登录验证时间等:
MaxAuthTries 3 LoginGraceTime 120
完成配置后,保存并退出编辑器,然后重新启动SSH服务以使配置生效:
systemctl restart sshd
四、防火墙配置
确保防火墙允许SSH流量通过,可以使用以下命令开启22端口(或自定义端口):
firewallcmd zone=public addport=2222/tcp permanent firewallcmd reload
五、生成密钥对并进行无密码登录配置
为了实现无密码登录,需要生成密钥对,并将公钥复制到目标服务器。
1. 生成密钥对
在本地计算机上生成密钥对:
sshkeygen t rsa b 2048
按提示操作,通常会将密钥保存到家目录下的.ssh
目录中。
2. 复制公钥到远程服务器
使用sshcopyid
命令将公钥复制到远程服务器:
sshcopyid i ~/.ssh/id_rsa.pub user@remote_ip
输入远程服务器的用户密码后,公钥会自动添加到远程用户的~/.ssh/authorized_keys
文件中。
3. 手动复制公钥
也可以手动复制公钥文件:
scp ~/.ssh/id_rsa.pub user@remote_ip:~/.ssh/authorized_keys
确保目标目录权限正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
六、常见配置示例与表格说明
以下是一些常见的SSH配置项及其说明:
配置项 | 说明 |
Port | 指定SSH服务的监听端口,默认为22。 |
PermitRootLogin | 禁止或允许root用户登录,可选值为yes 或no 。 |
PasswordAuthentication | 启用或禁用密码验证,可选值为yes 或no 。 |
PubkeyAuthentication | 启用或禁用公钥验证,可选值为yes 或no 。 |
AuthorizedKeysFile | 指定存储公钥的文件路径,默认为~/.ssh/authorized_keys 。 |
AllowUsers | 限定允许登录的用户列表,格式为user1 user2 。 |
DenyUsers | 限定禁止登录的用户列表,格式为user1 user2 。 |
MaxAuthTries | 设置最大认证失败次数,超过次数后禁止登录。 |
LoginGraceTime | 设置登录验证时间,单位为秒。 |
UseDNS | 是否启用DNS反向解析,建议设置为no 以提高性能。 |
ListenAddress | 绑定的地址,默认为0.0.0.0 表示监听所有地址。 |
Protocol | 使用的SSH协议版本,推荐使用版本2。 |
常见问题FAQs
1、如何更改SSH端口号?
编辑/etc/ssh/sshd_config
文件,找到并修改Port
项,将端口改为2222:
Port 2222
保存后重新启动SSH服务:
systemctl restart sshd
确保防火墙允许新端口通过:
firewallcmd zone=public addport=2222/tcp permanent firewallcmd reload
2、如何禁用root用户远程登录?
编辑/etc/ssh/sshd_config
文件,找到并修改PermitRootLogin
项:
PermitRootLogin no
保存后重新启动SSH服务:
systemctl restart sshd