# 修改/etc/ssh/sshd_config
PermitRootLogin no
# 只允许特定用户登录
AllowUsers user1 user2
# 或允许特定组
AllowGroups sshusers
# 修改/etc/ssh/sshd_config
Port 2222 # 改为非标准端口
PasswordAuthentication no
ssh-keygen -t ed25519 -a 100 # 推荐使用Ed25519
# 或
ssh-keygen -t rsa -b 4096 -o -a 100 # 如果需要RSA
# 安装Google Authenticator
sudo apt install libpam-google-authenticator
# 配置/etc/ssh/sshd_config
ChallengeResponseAuthentication yes
UsePAM yes
# 使用TCP Wrappers
# /etc/hosts.allow
sshd: 192.168.1.0/24
# /etc/hosts.deny
sshd: ALL
# /etc/ssh/sshd_config
ClientAliveInterval 300
ClientAliveCountMax 0
# /etc/ssh/sshd_config
LogLevel VERBOSE
sudo apt install fail2ban
# 配置/etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
# ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 10m
# ~/.ssh/config
Host *
Compression yes
sudo sshd -t # 测试配置是否正确
sudo ls -la /etc/ssh/sshd_config # 检查文件权限
who
w
last
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
tar -czvf ssh_backup.tar.gz ~/.ssh/
ssh -vvv user@host # 启用详细输出
sudo tail -f /var/log/auth.log # 实时查看认证日志
telnet host 22 # 测试端口是否开放
nc -zv host 22 # 另一种测试方法
通过实施这些最佳实践,您可以显著提高Linux系统中SSH服务的安全性和可靠性。