SSH 服务安装与配置
安装 SSH 服务
- 在 CentOS 系统上,SSH 服务通常通过 OpenSSH 包提供。
- 使用
yum 安装 OpenSSH: - 启动 SSH 服务并设置开机自启:
yum install openssh-server openssh-clients -y
systemctl start sshd
systemctl enable sshd
配置 SSH 服务
- SSH 服务器的配置文件是
/etc/ssh/sshd_config。 - 使用
vim 或其他文本编辑器编辑此文件以更改配置。 - 常用配置选项包括:
Port 2255:更改 SSH 服务监听的端口号,提高安全性。PermitRootLogin no:禁止 root 用户直接通过 SSH 登录。PasswordAuthentication no:禁用密码认证,仅使用密钥认证。
- 修改配置后,重启 SSH 服务使更改生效:
systemctl restart sshd
安全性提升
修改默认端口
- 修改
/etc/ssh/sshd_config 文件中的 Port 指令,将默认的 22 端口更改为其他端口(如 2255)。 - 重启 SSH 服务。
禁用 root 用户登录
- 将
/etc/ssh/sshd_config 文件中的 PermitRootLogin 设置为 no。 - 重启 SSH 服务。
使用密钥认证而非密码认证
ssh-keygen
- 将公钥添加到服务器上的
~/.ssh/authorized_keys 文件中。 - 修改
/etc/ssh/sshd_config,将 PasswordAuthentication 设置为 no(可选,取决于是否完全依赖密钥认证)。 - 重启 SSH 服务。
免密登录
创建密钥对
- 在客户端机器上执行
ssh-keygen 生成密钥对。
上传公钥到服务器
- 使用
ssh-copy-id 命令上传公钥到服务器,无需手动编辑 authorized_keys 文件:
ssh-copy-id -i /path/to/public_key user@server_ip
- 如果服务器 SSH 端口不是默认的 22,需要指定端口:
ssh-copy-id -i /path/to/public_key -p 端口号 user@server_ip
测试免密登录
- 使用
ssh 命令尝试登录服务器,不应再要求输入密码:
ssh user@server_ip
其他常用命令
查看 SSH 服务状态
systemctl status sshd
查看开放的 SSH 端口
- 使用
netstat(需安装 net-tools)或 ss 命令查看:
netstat -anplut | grep ssh
# 或
ss -anlutp | grep ssh
使用 nc 测试端口开放状态
- 使用
nc(Netcat)工具测试特定端口是否开放:
nc -z -w 1 服务器IP 端口号
echo $? # 返回 0 表示端口开放,非 0 表示端口未开放
总结
- SSH 服务提供了安全的远程登录和管理功能。
- 通过修改默认端口、禁用 root 登录、使用密钥认证等方式可以显著提高 SSH 服务的安全性。
- 免密登录通过密钥对认证简化了登录过程,提高了效率。
- 定期检查 SSH 服务的配置和状态是维护系统安全的重要步骤。