# 生成密钥(RSA 兼容性强)
ssh-keygen -t rsa -b 4096 -C "netnr" # 生成密钥
# Git 客户端 v2.33.1 及以上的版本或者 OpenSSH 是 8.8 及以上 RSA 算法被禁用,添加配置 ~/.ssh/config
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
# 生成密钥(ED25519 更小更快更安全,需要 OpenSSH 6.5 以上,推荐),密钥均为 256 位
ssh-keygen -t ed25519 -C "netnr"
# ref
https://blog.csdn.net/qq_41664096/article/details/118930458
https://docs.gitlab.com/ee/user/ssh.html
# 配置 SSH 连接
vi /etc/ssh/sshd_config # 编辑
/Port 22 # 搜索、修改端口号
RSAAuthentication yes # 开启RSA验证
PubkeyAuthentication yes #是否使用公钥验证
AuthorizedKeysFile .ssh/authorized_keys # 公钥的保存位置
PasswordAuthentication no # 禁止使用密码验证登录
# 允许 ROOT 登录,yes 允许、without-password 除密码以外、forced-commands-only 仅允许使用密钥、no 不允许
PermitRootLogin without-password
cd ~/.ssh
touch ~/.ssh/authorized_keys # 新建公钥文件
cat id_rsa.pub >> authorized_keys # 追加生成的公钥
# 权限设置
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
systemctl restart sshd.service # 重启服务
ssh -p 22 -i ~/.ssh/id_rsa root@192.168.100.115 # SSH 连接
# 多次登录失败锁定用户
cat /etc/pam.d/sshd # 查看 PAM 配置文件
# 配置示例
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600
auth required pam_tally2.so onerr=fail deny=10 unlock_time=1800 even_deny_root root_unlock_time=1800
# pam_tally2 模块说明
# deny 指定最大几次认证错误,如果超出此错误,将执行后面的策略。如锁定N秒,如果后面没有其他策略 指定时,默认永远锁定,须手动解锁
# file 记录日志的路径,默认是 /var/log/tallylog
# lock_time 锁定多长时间,单位是秒
# onerr=fail 表示连续失败
# unlock_time 被锁后多长时间自动解锁
# even_deny_root root用户在认证出错时,一样被锁定
# root_unlock_time root用户在失败时锁定多长时间,配合 even_deny_root 使用
# 手动解锁 root 用户
pam_tally2 -u root # 查看 root 用户密码连续输入错误次数
pam_tally2 -u root -r # 清除 root 用户密码连续输入错误次数
authconfig --disableldap --update # 更新 PAM 安全认证记录