SSH 优化


本文介绍如何优化 SSH 相关配置以提升安全性和日常使用体验。

更改默认端口

默认 SSH 端口为22,容易被批量 SSH 恶意登录尝试波及,可更改为其它未被占用端口。

修改 /etc/ssh/sshd_config 以更改 SSH 端口

sed -i 's/^#\?\s*Port\s\+[0-9]\+/Port 36633/' /etc/ssh/sshd_config

重启 SSHD 服务

systemctl restart sshd

禁止 Root 用户登录

既然禁止 Root 用户登录,那么首先应该创建一个新用户用于登录和管理服务器。

useradd --create-home --shell /bin/bash --groups sudo <用户名>

有些 Linux 发行版没有 sudo 用户组,取而代之的是 wheel 用户组。

useradd 命令在不同 Linux 发行版可能有着不同的行为。详情请见这篇博文

设置新用户密码

passwd <用户名>

修改 /etc/ssh/sshd_config 以禁止 Root 用户登录

sudo sed -i '/^#\?\s*PermitRootLogin/c\PermitRootLogin no' /etc/ssh/sshd_config

重启 SSHD 服务

sudo systemctl restart sshd

开启 SSH-KEY 登录

生成密钥对(输入命令后一直回车即可)

ssh-keygen -t ed25519

请在本地计算机生成密钥对,保管好私钥。

Ed25519 在保证安全性的同时,密钥长度比 RSA 短很多。Ed25519 的安全性相当于 3072 位的 RSA。

上传公钥到服务器

ssh-copy-id -i ~/.ssh/id_ed25519.pub <用户名>@<服务器 IP>

请登出服务器使用新创建的用户再次登录服务器,此时应该无需提供密码,SSH 自动使用私钥登录服务器。

若已成功使用私钥登录服务器,即可进行后续步骤。

修改 /etc/ssh/sshd_config 以禁止使用密码登录

PasswordAuthentication no

重启 SSHD 服务

sudo systemctl restart sshd

日志优化

确保rsyslog服务已启用,记录日志用于审计

sudo systemctl enable rsyslog

确保SSH LogLevel设置为INFO

sudo sed -i 's/^#\s*LogLevel\s\+INFO/LogLevel INFO/' /etc/ssh/sshd_config

避免 SSH 连接自动断开

~/.ssh/config 中添加以下内容:

Host    *
    ServerAliveCountMax 5
    ServerAliveInterval 100

ServerAliveCountMaxServerAliveInterval 后的数值可根据自身体验适当调节。

参考资料


如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录