什么是SSH密钥对认证?
SSH密钥对认证是一种不依赖于密码的身份验证方法。它涉及到生成一对密钥:公钥和私钥。用户需要将自己的公钥添加到想要登录的服务器上的~/.ssh/authorized_keys
文件中,而私钥则保存在本地计算机上。当尝试登录时,服务器会用公钥验证用户的私钥,如果匹配成功,则允许登录。
如何生成SSH密钥对
-
打开终端。
-
使用以下命令生成密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这里,
-t rsa
指定密钥类型为RSA,-b 4096
设置密钥长度为4096位以增加安全性,-C "your_email@example.com"
用于注释,通常填入你的电子邮件地址。 -
系统会提示你选择密钥文件存储的位置(默认是
~/.ssh/id_rsa
),并询问是否要为私钥设定一个密码(passphrase)。强烈建议设定一个强密码以增加额外的安全层。 -
密钥生成完成后,你可以查看公钥内容:
cat ~/.ssh/id_rsa.pub
将公钥添加到远程服务器
使用ssh-copy-id
命令可以方便地将公钥复制到远程服务器:
ssh-copy-id user@remote_host
其中user
是你在远程服务器上的用户名,remote_host
是服务器的IP地址或域名。
若ssh-copy-id
不可用,可手动将公钥追加到远程服务器的~/.ssh/authorized_keys
文件中。
实战案例
假设我们有一台运行Ubuntu Server 22.04的服务器,IP地址为192.168.1.100
,我们需要为其设置SSH密钥登录。
-
在本地机器上生成SSH密钥对:
ssh-keygen -t rsa -b 4096 -C "admin@example.com"
-
使用
ssh-copy-id
命令将公钥复制到远程服务器:ssh-copy-id admin@192.168.1.100
-
登录到远程服务器检查
~/.ssh/authorized_keys
文件是否正确添加了公钥:ssh admin@192.168.1.100 'cat ~/.ssh/authorized_keys'
-
修改SSH配置文件以禁用密码登录,提升安全性:
- 编辑
/etc/ssh/sshd_config
文件:sudo nano /etc/ssh/sshd_config
- 查找并修改以下参数:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
- 保存文件并重启SSH服务:
sudo systemctl restart sshd
- 编辑
-
测试能否无需输入密码直接登录服务器:
ssh admin@192.168.1.100
通过上述步骤,我们不仅成功设置了SSH密钥登录,还进一步增强了服务器的安全性。记住,定期更新你的安全策略,并保持系统的最新状态,对于维护网络安全至关重要。