SSH 优化
本文介绍如何优化 SSH 相关配置以提升安全性和日常使用体验。
更改 SSH 端口
默认 SSH 端口为22,容易被批量 SSH 恶意登录尝试波及,可更改为其它未被占用端口。
修改 /etc/ssh/sshd_config
以更改 SSH 端口
Port <端口>
重启 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 用户登录
PermitRootLogin no
重启 SSHD 服务
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
设置别名
平常使用 ssh 命令时,总要输入一长串参数,而设置别名后,诸如 ssh -p <端口> <用户名>@<服务器 IP>
就可以用 ssh <别名>
替代。
设置别名可通过修改本地计算机以下文件之一实现:
/etc/ssh/ssh_config
应用于全局~/.ssh/config
仅应用于当前用户
~
代表当前用户的家目录。
创建 ~/.ssh/config
touch ~/.ssh/config
在 ~/.ssh/config
中添加以下内容:
Host <别名>
HostName <服务器 IP>
Port <服务器 SSH 端口>
User <用户名>
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
此时已可通过 ssh <别名>
登录服务器。
避免 SSH 连接自动断开
在 ~/.ssh/config
中添加以下内容:
Host *
ServerAliveCountMax 5
ServerAliveInterval 100
ServerAliveCountMax
和 ServerAliveInterval
后的数值可根据自身体验适当调节。