IT袋

当前位置:主页 > 经验教程 > 系统教程 >

如何在Linux系统中设置SSH密钥身份验证

如何在Linux系统中设置SSH密钥身份验证(6)

时间:2024-03-08 20:49:32 来源:IT袋 作者:马勇
导读:如何在Linux系统中设置SSH密钥身份验证,多因素身份验证(MFA) 介绍多因素身份验证的重要性 多因素身份验证(MFA)是一种安全措施,要求用户在登录时提供两个或多个独立的身份验证因素,以

如何在Linux系统中设置SSH密钥身份验证

多因素身份验证(MFA)

介绍多因素身份验证的重要性

多因素身份验证(MFA)是一种安全措施,要求用户在登录时提供两个或多个独立的身份验证因素,以验证其身份。

通常,这包括“知道的事项”(如密码)和“拥有的物件”(如手机或硬件令牌)。

配置和使用基于密钥的MFA

1、安装并配置 MFA 工具(如 Google Authenticator):

sudo apt-get install libpam-google-authenticator

2、修改 PAM 配置文件:

sudo nano /etc/pam.d/sshd

在文件末尾添加以下行:

auth required pam_google_authenticator.so

3、修改SSH配置文件,启用 ChallengeResponseAuthentication:

sudo nano /etc/ssh/sshd_config

确保以下行的值为 yes

ChallengeResponseAuthentication yes

4、重启SSH服务:

sudo service ssh restart

结合硬件密钥和手机应用的MFA

除了基于软件的 MFA(如手机应用生成的验证码),你还可以考虑结合硬件密钥,如 YubiKey 或其他支持 U2F 标准的硬件令牌。

1、在本地机器上配置硬件密钥:

ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

2、将生成的公钥添加到 SSH 服务器上的 ~/.ssh/authorized_keys

3、修改SSH配置文件,启用硬件密钥认证:

sudo nano /etc/ssh/sshd_config

确保以下行的值为 yes

PubkeyAuthentication yes
AuthenticationMethods publickey,password publickey,publickey

4、重启SSH服务:

sudo service ssh restart

通过结合不同因素的身份验证,你大大提高了服务器的安全性。

定期更新密钥对

为了增加安全性,定期更新 SSH 密钥对是一个好的实践。

可以使用以下步骤生成新的密钥对并替换旧的密钥:

# 生成新的密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/new_key -C "your_email@example.com"
# 复制新的公钥到目标服务器
ssh-copy-id username@your_server_ip -i ~/.ssh/new_key.pub
# 测试新密钥是否可以成功登录
ssh -i ~/.ssh/new_key username@your_server_ip
# 如果一切正常,可以删除旧密钥
rm ~/.ssh/id_rsa*

监控和审计SSH访问

启用 SSH 访问的监控和审计功能可以及时发现潜在的安全问题。

可以使用工具如 fail2ban 来监控日志文件,自动封禁恶意的 SSH 连接尝试。

# 安装 fail2ban
sudo apt install fail2ban   # 对于 Debian/Ubuntu
sudo yum install fail2ban   # 对于 Red Hat/CentOS
# 启用 SSH 防护
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

相关阅读